Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: ошибка
 
 автор: btr   (28.11.2012 в 22:32)   письмо автору
 
 

Здравствуйте.
При первом открытии после старта сервера выдает след ошибку:
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 'AND id_zakaz = 0' at line 4

код:
<?php

/// номер шопера
$q1 $_COOKIE['id_user'];


include 
"0_start.php";

// определение общей суммы 
$q "
SELECT  SUM(price)
FROM shoper_korz
WHERE id_shoper = 
$q1
AND id_zakaz = 0
"
;


не пойму, в чем причина?

  Ответить  
 
 автор: cheops   (29.11.2012 в 00:07)   письмо автору
 
   для: btr   (28.11.2012 в 22:32)
 

Переменная $q1 скорее всего пустая или наоборот содержит какие-то недопустимые символы... при обработке ошибки, помимо сообщения от mysql_error() выводите также сам SQL-запрос $q - будет сразу видно, в чем дело.

>$q1 = $_COOKIE['id_user'];
Если это число, лучше сразу приводить к целому
$q1 = intval($_COOKIE['id_user']);

  Ответить  
 
 автор: btr   (29.11.2012 в 00:34)   письмо автору
 
   для: cheops   (29.11.2012 в 00:07)
 

>Переменная $q1 скорее всего пустая или наоборот содержит какие-то недопустимые символы... при обработке ошибки, помимо сообщения от mysql_error() выводите также сам SQL-запрос $q - будет сразу видно, в чем дело.
>
в каком смысле - "выводите также сам SQL-запрос $q "? поясните пожалуйста

>>$q1 = $_COOKIE['id_user'];
>Если это число, лучше сразу приводить к целому
>$q1 = intval($_COOKIE['id_user']);
согласен.
а какая разница между (int) и intval() ?

в куке число.
дело в том, что эта ошибка проявляется не просто после запуска сервера, а когда я его давно не запускал что ли...:/

так. ага. у меня эта кука на 5 дней. след-но, когда я запускаю на шестой, то кука создается, но при первом проходе является недоступной. вот причина ошибки :))).

но на вопросы все же прошу ответить.

  Ответить  
 
 автор: Sfinks   (29.11.2012 в 01:17)   письмо автору
 
   для: btr   (29.11.2012 в 00:34)
 

> в каком смысле - "выводите также сам SQL-запрос $q "? поясните пожалуйста
в смысле напишите в коде
$res = mysql_query($q) or die(mysql_error());
И увидите не только ошибку но и текст запроса вызвавшего эту ошибку.

А данные передаваемые в запрос не "лучше сразу приводить....", а ОБЯЗАТЕЛЬНО проверять и обрабатывать ДО передачи в запрос.
Иначе SQL-инъекции вам не избежать!

> а какая разница между (int) и intval() ?
(int) -структура языка из раздела Манипуляции с типами
intval() -это функция, у которой есть еще и параметры.
Соответственно, результаты могут быть разные.

  Ответить  
 
 автор: cheops   (29.11.2012 в 06:49)   письмо автору
 
   для: btr   (29.11.2012 в 00:34)
 

>в каком смысле - "выводите также сам SQL-запрос $q "? поясните пожалуйста
Т.е. когда обрабатываете ошибку, выводите и сам SQL-запрос
<?php
  $res 
mysql_query($q);
  if(!
$res)
  {
    echo 
mysql_error()."<br />";
    echo 
$q;
    exit();
  }
?>

>а какая разница между (int) и intval() ?
(int) - конструкция языка, а intval() - функция. С практической точки зрения разницы, почти никакой, до тех пор пока вы используете их в качестве функции обратного вызова (т.е. аргумента для других функций).

  Ответить  
 
 автор: btr   (29.11.2012 в 10:33)   письмо автору
 
   для: cheops   (29.11.2012 в 06:49)
 

Всем большое спасибо :) будем исправляться

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования