За последние 24 часа нас посетили 17344 программиста и 1720 роботов. Сейчас ищут 929 программистов ...

Ошибка в запросе, подскажите как исправить

Тема в разделе "PHP и базы данных", создана пользователем SiUna, 13 апр 2012.

  1. SiUna

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

    С нами с:
    1 апр 2012
    Сообщения:
    41
    Симпатии:
    0
    Подскажите пожалуйста, почему не работает запрос?
    Код (PHP):
    1. $final = $_POST['final'];
    2.  
    3. $db = mysql_connect("localhost","root", "") or die ("Нет соединения с базой данных");
    4. mysql_query("SET NAMES 'cp1251'");
    5. mysql_select_db("xml_book",$db) or die ("Нет доступа к базе данных пользователя");
    6.  
    7. $query = mysql_query("select jos_comprofiler.user_id, jos_comprofiler.firstname, jos_comprofiler.middlename, jos_comprofiler.lastname, jos_comprofiler.cb_group, jos_session.username from jos_comprofiler join jos_session on jos_comprofiler.user_id=jos_session.userid and jos_session.guest=0");
    8. $row = mysql_fetch_assoc($query);
    9.  
    10. $k = $row['username'];
    11. $user_id = $row['user_id'];
    12. $lastname = $row['lastname'];
    13. $middlename = $row['middlename'];
    14. $firstname = $row['firstname'];
    15. $group = $row['cb_group'];
    16.  
    17. $result = $final;
    18. echo $k, $user_id, $lastname, $middlename, $firstname, $group."<br />";
    19. echo $result; //Проверяю, тут все выводится правильно
    20.  
    21. $query2 = mysql_query("INSERT INTO resulttest SET user_id='$user_id', lastname='$lastname', group='$group', result='$result'") or die (mysql_error());
    22.  
    23. echo $query2;
    24.  
    25. if ($query2 == 'true')
    26. {
    27.   echo "<font color='green'><br />Результаты сохранены успешно!</font><br />";
    28. }
    29. else
    30. {
    31.   echo "<font color='red'><br />Результаты не были сохранены!</font><br />";
    32. }
    33.  
    В запросе $query2 ошибка:
    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 'group='', result=''' at line 1
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    дык запрс какой получился - посмотри. вдруг там косяк.

    Добавлено спустя 1 минуту 53 секунды:
    кстати с массивом можно так же работать, как и с переменными. не обязательно каждый член массива пихать в отдельную переменную.

    Добавлено спустя 1 минуту 48 секунд:
    group в кавычки возми обратные, вот что =)

    и вобще все поля надо брать в кавычки `такие` чтобы не было пересечений с командами самого мускула. а GROUP это как раз такой случай.
     
  3. SiUna

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

    С нами с:
    1 апр 2012
    Сообщения:
    41
    Симпатии:
    0
    не помогает) думаю там дело не в кавычках, первые то 2 поля нормально определяет.
    Код (Text):
    1.  
    2. $query2 = mysql_query("INSERT INTO resulttest SET user_id='$user_id', lastname='$lastname', group=`$group`, result='$result'") or die(mysql_error());
    Код (Text):
    1.  
    2. $query2 = mysql_query("INSERT INTO resulttest SET user_id='$user_id', lastname='$lastname', group=\"$group\", result='$result'") or die(mysql_error());
    И так и так попробовала. Поэтому и незнаю в чем косяк, ошибку выдает вот такую:
    Код (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 'group="", result='3'' at line 1
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    запрос сам посмотреть, это значит посмотрнть то, что в итоге получилось, а не код, который это делает.

    еще раз.
    поле group возмите в обратные кавычки, а значение поля - в прямые
    `group` = 'lalala'

    весь запрос переделайте на такой манер и назвпние таблицы тоже возмите в косые
     
  5. KaFe

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

    С нами с:
    13 апр 2012
    Сообщения:
    13
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Код (Text):
    1. "INSERT INTO `resulttest` SET `user_id`='{$user_id}', `lastname`='{$lastname}', `group`='{$group}', `result`='{$result}'";
     
  6. SiUna

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

    С нами с:
    1 апр 2012
    Сообщения:
    41
    Симпатии:
    0
    в итоге он ничего не выдавал, пустая строка была
    Спасибо помогло, хотя раньше и без этого все работало. Вообще я смотрела примеры готовые вставки в таблицу, и оттуда переделывала.
    Я уже думала что там проблема в типах данных.
     
  7. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Значит просто раньше названия полей в таблицах не пересекались со служебными словами MySQL...
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    переменные не обязательно в фигурные скобки брать.
     
  9. KaFe

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

    С нами с:
    13 апр 2012
    Сообщения:
    13
    Симпатии:
    0
    Адрес:
    Екатеринбург
    спасибо, КЭП
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    обращайся