PHP MySQL Query doesn't work, but works from t

2019-05-24 14:29发布

问题:

Here's my code:

$gid = (int) stripslashes($_POST['id']);
echo $gid;

$db = dbConnect(); $test = $db->query('update games set played = played + 1 where id = "$gid"'); echo $db->error; echo $db->errno; die(); }

It works fine from the terminal, and it correctly prints out $gid, and no errors are returned. Am I missing something really obvious?

回答1:

You are enclosing the query in single quotes. And in single quotes variable interpolation(also called substitution) does not happen.

Simple example:

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

Change your code as:

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

Also from the line: $gid = (int) stripslashes($_POST['id']); its clear that $gid is an integer and there is not need to enclose it in quotes in your query. So we have:

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


回答2:

$test = $db->query("UPDATE `games` SET `played` = `played` + 1 WHERE `id` = '" . $gid . "'");


回答3:

anything in single quotes is not parsed. do id="' . $gid . '"

alternatively wrap the entire thing in double quotes and put single quotes around $gid.



回答4:

try

$test = $db->query
("
    UPDATE `games` 
    SET
       `played` = (`played` + 1)
    WHERE `id` ='" . $gid . "'
");


标签: php mysql mysqli