За последние 24 часа нас посетили 50869 программистов и 1758 роботов. Сейчас ищут 2425 программистов ...

Не могу добавить в БД?!?!?

Тема в разделе "PHP для новичков", создана пользователем Panter7777, 4 янв 2011.

  1. Panter7777

    Panter7777 Активный пользователь

    С нами с:
    10 окт 2010
    Сообщения:
    96
    Симпатии:
    0
    Адрес:
    Киев
    Всем привет!
    Творится ерунда какая-то

    вот код:

    Код (Text):
    1.  
    2. if (!empty($hero[0]) && !empty($tel)){
    3.   //echo "Поля заполнены!";
    4.   $sql2 = mysql_query("SELECT id, tel FROM jek_info WHERE tel = '$tel'");
    5.   $res2 = mysql_fetch_assoc($sql2);  
    6.   $bu = $res2['tel'];
    7.   $bu_id = $res2['id'];
    8.   if (empty($bu)){ //КОГДА СРАБАТЫВАЕТ ТО ВСЕ РАБОТАЕТ!!!
    9.   $sql3 = mysql_query("INSERT INTO jek_info (name, tel, cont_user, comment) VALUES ('$jek_name', '$tel', '$cont_user', '$comment')");
    10.       $sql4 = mysql_query("SELECT id FROM jek_info WHERE tel = '$tel'");
    11.       $res4 = mysql_fetch_assoc($sql4);
    12.     if (!empty($res4)){
    13.       for ($i=0; $i<count($hero);$i++){
    14.     $sql5=mysql_query("INSERT INTO jek_address (jek_id) VALUES ('{$res4['id']}') WHERE name = '{$hero[$i]}'");
    15.       }
    16.     if ($sql5 == TRUE){echo "Новый контакт добавлен";}
    17.     }
    18.   }
    19.   else {echo $bu."-ID:".$bu_id; // ЭТИ 2-ВЕ ПЕРЕМЕННЫЕ ВЫВОДЯТСЯ
    20.     $sql6 = mysql_query("UPDATE jek_info SET name='$jek_name', tel='$tel', cont_user='$cont_user', comment='$comment' WHERE id='$bu_id'");
    21.     if ($sql6 == TRUE){echo "Новый контакт ЖЭКа обновлен";} // ТОЖЕ РАБОТАЕТ
    22.       for ($i=0; $i<count($hero);$i++){
    23.         $sql7=mysql_query("INSERT INTO jek_address (jek_id) VALUES ('$bu_id') WHERE name = '{$hero[$i]}") or die (mysql_error()); // ТУТ ОШИБКА
    24.       }
    25.     if ($sql7 == TRUE){echo "Новый контакт ЖЭКА обновлен и для адресов";}
    26.   }
    27. }
    все работает кроме вот это го момента
    Код (Text):
    1. $sql7=mysql_query("INSERT INTO jek_address (jek_id) VALUES ('$bu_id') WHERE name = '{$hero[$i]}") or die (mysql_error()); // ТУТ ОШИБКА
    Но прикол в том что эта часть написана эдентично и она работает:

    Код (Text):
    1. $sql5=mysql_query("INSERT INTO jek_address (jek_id) VALUES ('{$res4['id']}') WHERE name = '{$hero[$i]}'");
    Ошибку выдает такую:
    Код (Text):
    1. Новый контакт ЖЭКа обновлен
    2. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE name = 'ММ-3b-2-P-s1' at line 1
    А если я этот запрос проверяю в phpmyadmin через SQL-запрос там чуть по другому ошибка выглядит, вот запрос и ошибка:
    Код (Text):
    1.  
    2. Ошибка
    3.  
    4. SQL-запрос:
    5.  
    6. INSERT INTO jek_address( jek_id )
    7. VALUES (
    8. '11'
    9. )
    10. WHERE name = ММ - 3b -2 - P - s1
    11.  
    12.  
    13. Ответ MySQL:  
    14. #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE name = ММ-3b-2-P-s1' at line 1
     
  2. Devzirom

    Devzirom Активный пользователь

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    Зачем, вообще, тут нужен WHERE?
     
  3. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Так что не ясного в ошибке же написано все.

    WHERE name = '{$hero[$i]}"

    А куда делся ' перед " ?
     
  4. Panter7777

    Panter7777 Активный пользователь

    С нами с:
    10 окт 2010
    Сообщения:
    96
    Симпатии:
    0
    Адрес:
    Киев
    Devzirom
    WHERE= тут нужен!!! так как обновляется список и нужно идентифицировать поле списка какое обновляем!

    Invision
    С ним тоже не работает только ошибка выглядит вот так:
    Код (Text):
    1.  
    2. $sql7=mysql_query("INSERT INTO jek_address (jek_id) VALUES ('$bu_id') WHERE name = '{$hero[$i]}' ") or die (mysql_error())
    3.  
    4.  MySQL server version for the right syntax to use near 'WHERE name = 'ММ-3b-2-P-s1'' at line 1 //Обрати в нимание на адрес
     
  5. Devzirom

    Devzirom Активный пользователь

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    Как интересно. По моему для обновления используется UPDATE. А INSERT используется для вставки. Или я, что-то путаю?
     
  6. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Блин тут {$hero[$i]} в конце нету ничего лишнего? Вообще откуда берется значение в {$hero[$i]}
     
  7. Panter7777

    Panter7777 Активный пользователь

    С нами с:
    10 окт 2010
    Сообщения:
    96
    Симпатии:
    0
    Адрес:
    Киев
    Devzirom
    Спасибо тыкнул носом на ошибку- не INSERT a UPDATE теперь все работает.

    Invision
    Про лишнее не понял. А берется из формы
    Код (Text):
    1. <?php
    2. print "<center><form action='' method='post' align='center' style='background: #d1f59b; width: 95%; border-bottom:2px dotted #4169e1;'>
    3. <table align='center' border='0'><tr><td>
    4.    <p><select size='20' multiple name='hero[]' style='width:150;'>
    5.     <option disabled>Выберите узел</option>";
    6.  
    7.  
    8. while ($res = mysql_fetch_assoc($sql))
    9. {  
    10. $name = $res['name'];
    11. $id = $res['id'];
    12. print "<option value='$name' name='$id' >$name</option>";
    13. }
    14. print "</select></p>";
    15. ?>
     
  8. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Эм забей тогда :D