【发布时间】:2014-12-30 21:21:04
【问题描述】:
$url = "example.com";
$data = json_decode($raw);
$pname=$data->name;
$sql="UPDATE `client` SET pname='$pname' WHERE url='$url'";
$query=mysql_query($sql,$link)or die(mysql_error());
当 json 数据被解码时,变量 $pname 中的值进入客户端表。如果名称中有撇号 ('),则会引发错误。我可以对变量进行哪些更改以将名称发送到数据库表?
示例: 杰瑞更新没有问题 D'Cunha 没有更新,因为它有撇号。查询变成了
"UPDATE `client` SET pname='D'Cunha' WHERE url='example.com'"
我找到了一些文章,但没有说明如何找到撇号并更改变量值
【问题讨论】:
-
stripslashes()和mysql_real_escape_string()会解决这个问题。 -
不要使用
mysql_*。使用准备好的语句。 -
如果我想运行单个查询,这可以解决。我正在循环数百个数据。如何使用 if 语句更改变量 $pname 的值?如果有撇号,请将其替换为您建议的格式...
-
然后在查询本身中注入
mysql_real_escape_string(),或者使用准备好的语句,如前所述。 -
谢谢大家。上帝保佑