是。所以我使用PDO lib连接并与数据库(MySQL)进行通信
所以现在它看起来像我的例子更新“bla”列:
$sql = $connect->prepaer("UPDATE users SET bla='bla' WHERE id = $USER AND age =:age");
$sql->bindValue(":age", $age);
$sql->execute();
现在,如果你能看到我已经绑定了值:仅限年龄而不是$ USER。
我在其他所有查询中都绑定了除$ USER之外的所有其他值。
$ USER是您登录的用户ID。
我想知道我是否可以保护$ USER变量,如果存在某种类型的转义字符串,就像你可以使用mysql_ *(mysql_real_escape_string)一样?。
否则我需要编辑所有查询,并添加bindValue(:user,$ USER)......
答案 0 :(得分:2)
好吧,你可能可以使用任何可用的转义函数和方法,但问题是:为什么?当然,找到所有查询可能会很麻烦,但我会说,对查询进行半参数化是一件非常奇怪的事情。请添加绑定,请;)
那说,mysql_real_escape_string()有什么问题?如果您真的想要快速入侵,只需将其添加到您的字符串构建中,您就可以玩:)。
但是,再次,只是努力添加绑定。请?未来你会感谢你。
答案 1 :(得分:1)
无论如何都要改变用户以使其保持一致。这可能是额外的工作,但从长远来看它是值得的。
另外,只是你不知道 - 你可以将参数数组传递给Execute函数而不是使用bindValue()。我个人有一个包装器数据库类,所以我的更新调用如下所示:
$ db->更新(“UPDATE用户SET bla =?WHERE id =?AND age =?”,array('bla',$ USER,age));
看起来更整洁IMO。
然后在我的课程中,我只是在数组参数上调用SQL和Execute。
答案 2 :(得分:1)
PDO:quote(),但你能做的最好的事情就是绑定这个值。