Нужна помощь с несколькими предложения WHERE - PullRequest
1 голос
/ 31 января 2011

У меня есть запрос UPDATE, который я хотел бы выполнить.

Но перед обновлением количества в базе данных должно быть выполнено 2 условия.

Во-первых, session_id () должен совпадать с одним из идентификаторов сеанса в столбце сеанса, а во-вторых, описание продукта должно совпадать с описанием продукта, соответствующего идентификатору сеанса.

Вот что у меня есть:

mysql_query(UPDATE cart 
               SET quantity = $q, 
             WHERE sessionid = "'.session_id().'" 
               AND description = $d') or die(mysql_error());

Теперь он дает мне следующую ошибку:

У вас есть ошибка в вашем синтаксисе SQL;
проверьте руководство, соответствующее вашей версии сервера MySQL, для правильного синтаксиса для использования рядом'WHERE sessionid = "bqlbh5rdogbhmq70skhtkbvmb0" AND description = $ d' в строке 1

Однако я скопировал этот запрос обновления прямо из W3Schools, поэтому он должен быть правильным, верно?Буду признателен за любую помощь.

Ответы [ 5 ]

3 голосов
/ 31 января 2011

Ошибка возникает из-за знака «,» перед оператором WHERE. Правильный запрос будет:

mysql_query( "UPDATE cart SET quantity = " . $q . " WHERE sessionid = "' . session_id( ) . '" AND description = " . $d . "" ) or die( mysql_error( ) );

1 голос
/ 31 января 2011

вставленный вами код плохо отформатирован, и я сомневаюсь, что код, используемый в вашем приложении.

$sql = sprintf(
    "UPDATE `cart` SET `quantity` = '%d' WHERE `sessionid` = '%s' AND `description` = '%s'", 
    $q, 
    session_id(), 
    $d
);
mysql_query($sql);
1 голос
/ 31 января 2011

удалить , (запятую) после $q

0 голосов
/ 31 января 2011

Также у вас есть проблема с одинарными кавычками здесь .'" AND description=$d'), и $ d не анализируется.Это приведет к неправильному запросу SQL.Измените одинарные кавычки на двойные или просто используйте строку append ., чтобы добавить значение $d, а не литерал $ d

пример:

$a = 5;
$b = 'a is $a'; // a is $a;
$c = "a is $a"; // a is 5
0 голосов
/ 31 января 2011

Это должно выглядеть так:

mysql_query("UPDATE cart SET quantity = $q WHERE sessionid='" .session_id(). "' AND description = '$d'") or die(mysql_error());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...