php mysql real_escape_string 用于整个查询

标签 php mysql

是否可以转义整个查询而不是每个搜索字段。例如,我知道我可以这样做:

$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/

相关文章:

字段值前的 mySQL 空格

mysql - 具有多个 Mysql 容器的 Docker 无法正常工作

关于使用多个参数的 PRIMARY KEY( param, param.. ) 语法的 MySql 文档

php - 如果不需要字段,Laravel 不会验证

php - 如何从 PHP 将当前时间输入到 mysql 表中

php - 在 session 之外,我有哪些选项可以将客户购物篮内容存储在我的网站上?

mysql - 尝试将 SQL Server 转换为 MySql 进行类(class)

php - html的基本php流程

PHP 和 MySQL Web 应用程序 - 选择单个字段(与)从表中选择 *

php - 就像mysql的两个表之间