如您所见,我有一个查询,我想插入变量。 我的语法出了什么问题?
$query = "UPDATE house SET epname=".$newtitle" WHERE epid= ".$epid;
答案 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";