繁体   English   中英

在MySQL查询中插入变量

[英]Inserting Variables In MySQL Query

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

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

基本语法错误是:

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

如果您打算沿着重击字符串的方式一起编写SQL语句,那么您应该利用双引号进行插值的事实。 这导致代码更具可读性。

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

但是打击字符串的方法有缺陷 使用准备好的语句 (最好使用PDO),它们很难创建SQL注入漏洞,并且(更容易理解)易于理解。

您的变量是字符串吗? 您将需要用引号将它们括起来,以用于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注入攻击

$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";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM