Вот мой код:
$gid = (int) stripslashes($_POST['id']); echo $gid;
$ db = dbConnect (); $ test = $ db-> query ('набор игр для воспроизведения играл = играл + 1, где id = "$ gid"'); echo $ db-> ошибка; echo $ db-> errno; умереть(); } Он отлично работает с терминалом, и он правильно выводит $ gid, и никаких ошибок не возвращается. Я пропустил что-то действительно очевидное?
Вы включаете запрос в одинарные кавычки. А в одинарных кавычках переменная интерполяция (также называемая заменой) не происходит.
Простой пример:
$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");
$test = $db->query("UPDATE `games` SET `played` = `played` + 1 WHERE `id` = '" . $gid . "'");
ничего в одинарных кавычках не анализируется. do id="' . $gid . '"
альтернативно оберните всю вещь в двойные кавычки и поставьте одинарные кавычки вокруг $ gid.
пытаться
$test = $db->query (" UPDATE `games` SET `played` = (`played` + 1) WHERE `id` ='" . $gid . "' ");