在MySQL查询中插入变量

时间:2010-12-26 22:50:28

标签: php sql mysql variables

如您所见,我有一个查询,我想插入变量。 我的语法出了什么问题?

$query = "UPDATE house SET epname=".$newtitle" WHERE epid= ".$epid;

3 个答案:

答案 0 :(得分:3)

基本语法错误是:

…e=".$newtitle" W…
             ^^

如果你打算将字符串串起来制作SQL语句,那么你应该利用双引号插值的事实。这导致代码更易读。

$query = "UPDATE house SET epname=$newtitle WHERE epid=$epid";

但是字符串抨击的方法存在缺陷。使用prepared statements(最好使用PDO),它们更难以创建SQL注入漏洞,并且(可以说)更容易阅读。

答案 1 :(得分:2)

你的变量是字符串吗?为了MySQL查询的目的,您需要将它们括在引号中。

此外,您在$ newtitle之后缺少连接运算符(句点)。

如果你回显$ query的值,你应该看到错误:

UPDATE house SET epname=[value of newtitle] WHERE epid= [value of $epid]

假设epname是char / varchar值,而epid是某种整数,你可能想要这样做:

$query = "UPDATE house SET epname = '" . mysql_real_escape_string($newtitle) . "' WHERE epid= " . $epid;

如果不在字符串周围使用mysql_escape_string函数,则容易受到SQL注入攻击

答案 2 :(得分:0)

$query = "UPDATE house SET epname=".$newtitle" WHERE epid= ".$epid;

应该是

$query = "UPDATE house SET epname=".$newtitle." WHERE epid= ".$epid;

或更好

$query = "UPDATE house SET epname= $newtitle WHERE epid= $epid";