|
|
|
| Здравствуйте.
При первом открытии после старта сервера выдает след ошибку:
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
";
|
не пойму, в чем причина? | |
|
|
|
|
|
|
|
для: btr
(28.11.2012 в 22:32)
| | Переменная $q1 скорее всего пустая или наоборот содержит какие-то недопустимые символы... при обработке ошибки, помимо сообщения от mysql_error() выводите также сам SQL-запрос $q - будет сразу видно, в чем дело.
>$q1 = $_COOKIE['id_user'];
Если это число, лучше сразу приводить к целому
$q1 = intval($_COOKIE['id_user']); | |
|
|
|
|
|
|
|
для: 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 дней. след-но, когда я запускаю на шестой, то кука создается, но при первом проходе является недоступной. вот причина ошибки :))).
но на вопросы все же прошу ответить. | |
|
|
|
|
|
|
|
для: btr
(29.11.2012 в 00:34)
| | > в каком смысле - "выводите также сам SQL-запрос $q "? поясните пожалуйста
в смысле напишите в коде
$res = mysql_query($q) or die(mysql_error());
| И увидите не только ошибку но и текст запроса вызвавшего эту ошибку.
А данные передаваемые в запрос не "лучше сразу приводить....", а ОБЯЗАТЕЛЬНО проверять и обрабатывать ДО передачи в запрос.
Иначе SQL-инъекции вам не избежать!
> а какая разница между (int) и intval() ?
(int) -структура языка из раздела Манипуляции с типами
intval() -это функция, у которой есть еще и параметры.
Соответственно, результаты могут быть разные. | |
|
|
|
|
|
|
|
для: 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() - функция. С практической точки зрения разницы, почти никакой, до тех пор пока вы используете их в качестве функции обратного вызова (т.е. аргумента для других функций). | |
|
|
|
|
|
|
|
для: cheops
(29.11.2012 в 06:49)
| | Всем большое спасибо :) будем исправляться | |
|
|
|