是否可以转义整个查询而不是每个搜索字段。例如,我知道我可以这样做:
$name="O'Connor";
$email="mark.O'Connor@something.com";
$name=mysql_real_escape_string($name);
$email=mysql_real_escape_string($email);
$query =("SELECT * FROM TABLE1 WHERE Name = '$name' OR Email = '$email' ");
// code to run query here
我正在寻找的是一种构建我的查询字符串的方法:
$query=("SELECT * FROM TABLE1 WHERE Name = '$name' OR Email = '$email' ");
$query=mysql_real_escape_string($query); // Can I escape the whole Query ??
// code to run query here
我问这个问题的原因是我有一个复杂的查询,它使用了大约 15 个来自表单的变量,我想一次清理它们而不是使用大量的 mysql_real_escape($vairableName)...
这可能吗,任何人都可以解释我如何实现这一目标
提前致谢
最佳答案
你不能那样做。转义将 SQL 中具有特殊含义的字符更改为转义序列。您需要一些具有特殊含义的字符,这样查询才能工作。如果您可以转义整个查询,那么所有数据库驱动程序都会自动执行此操作。
例如
$foo = "John O'Reilly";
$sql = "WHERE name='$foo'";
# There are three ' characters here, but only the middle one should be escaped
也就是说,您应该停止使用 an obsolete database API并选择一个 modern replacement支持 prepared statements这将使您不必到处调用 real_escape_string
。
关于php mysql real_escape_string 用于整个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23757072/