Reputation: 13334
My PHP file contains the following function. It works when I set the review column to '$review'
and the IdUser
to 2. But I need to have the IdUser
set to the variable $user
. What is the correct syntax to set IdUser
to the variable instead of a constant? (preferably in a way that avoids SQL injection attacks).
function addRatings2($review, $user) {
//try to insert a new row in the "ratings" table with the given UserID
$result = query("UPDATE ratings SET review ='$review' WHERE IdUser = 2 order by dateTime desc limit 1");
}
Upvotes: 0
Views: 10172
Reputation: 71
Hi the right syntax is to use
{$var}
wherever you want the current value of var to appear, so in your case it would be
$result = query("UPDATE ratings SET review ='{$review}' WHERE IdUser = {$user}
order by dateTime desc limit 1");
Upvotes: 1
Reputation: 1250
You must use single quotes for a string as you have done, but you don't need to for an integer
query("UPDATE ratings SET review ='$review' WHERE IdUser = $user order by dateTime desc limit 1");
Upvotes: 1
Reputation: 325
Try this one.
function addRatings2($review, $user) {
$review = mysql_real_escape_string($review);
$user = (int)$user
$result = query("UPDATE ratings SET review ='$review' WHERE IdUser = $user order by dateTime desc limit 1");
}
Upvotes: 0
Reputation: 51
//anti-injection
$user = (int)$user;
$review = mysql_real_escape_string($result); //mysqli_real_escape_string will be better
$result = query("UPDATE ratings SET review ='$review' WHERE IdUser = $user order by dateTime desc limit 1");
Upvotes: 1