PHP MySQL Query не работает, но работает с терминала - PullRequest
2 голосов
/ 23 сентября 2010

Вот мой код:

<code>$gid = (int) stripslashes($_POST['id']);
echo $gid;</p>

<p>$db = dbConnect();
$test = $db->query('update games set played = played + 1 where id = "$gid"');
echo $db->error;
echo $db->errno;
die();
}
Он отлично работает из терминала, и он правильно выводит $ gid, и никаких ошибок не возвращается. Я что-то упускаю действительно очевидное?

Ответы [ 4 ]

3 голосов
/ 23 сентября 2010

Вы заключаете запрос в одинарные кавычки.И в одинарных кавычках интерполяция переменных (также называемая подстановкой) не происходит.

Простой пример:

$who = 'harry potter';
echo 'hi "$who"'; // prints hi "$who"
echo "hi '$who'"; // prints hi 'harry potter'

Измените свой код следующим образом:

$test = $db->query("update games set played = played + 1 where id = '$gid'");

Также из строки: $gid = (int) stripslashes($_POST['id']); ясно, что $gid является целым числом инет необходимости заключать его в кавычки в вашем запросе.Итак, имеем:

$test = $db->query("update games set played = played + 1 where id = $gid");
1 голос
/ 23 сентября 2010
$test = $db->query("UPDATE `games` SET `played` = `played` + 1 WHERE `id` = '" . $gid . "'");
0 голосов
/ 23 сентября 2010

попробуй

$test = $db->query
("
    UPDATE `games` 
    SET
       `played` = (`played` + 1)
    WHERE `id` ='" . $gid . "'
");
0 голосов
/ 23 сентября 2010

ничего в одинарных кавычках не анализируется.do id="' . $gid . '"

альтернативно оберните все это в двойные кавычки и поместите одинарные кавычки в $ gid.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...