【发布时间】:2014-07-17 18:47:00
【问题描述】:
我对这段代码有疑问,我使用表单将值传递给搜索引擎,我想做的是将特殊字符读取为常规字符,因为如果我输入 %sam% 它会读取这是“查询”的一部分,不像常规字符串(普通字符)
有可能
$search = $_GET['query'];
$query = "SELECT * FROM mobiles WHERE (`name` LIKE :search) or (`type` LIKE :search)";
$query_params = array(':search' => mysql_real_escape_string( $search ));
try
{
$stmt = $db->prepare($query);
$result = $stmt->execute($query_params);
}
catch(PDOException $ex)
{
die("Failed to run query: " . $ex->getMessage());
}
【问题讨论】:
-
"因为如果我输入 %sam% 它会将其读取为'查询'" WAT?
-
另外:你为什么要使用
mysql_real_escape_string??? -
所以您希望能够从表单而不是查询本身使用通配符搜索?
-
m_r_e_s() 将失败,除非您通过 mysql_connect 连接到 mysql - 它不会(并且实际上永远不可能)使用 PDO 连接来完成它必须做的事情。而且由于您使用的是占位符,因此像这样转义只会双重转义数据并防止与通常具有 sql metachars 的文本匹配。
-
@PeeHaa 我只是想找到一种方法将 % simbol 读取为 nomar 字符而不是符号,我希望它有意义