如何将特殊字符视为普通字符pdo

时间:2014-07-17 18:47:00

标签: php mysql regex pdo

我对这段代码有问题,我使用表单将值传递给搜索引擎,我想要做的是将特殊字符作为常规字符读取,因为如果我键入%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());
}

2 个答案:

答案 0 :(得分:0)

使用pdo连接对象的引用

 $db->quote($search ); //Assuming your connection is $db

虽然%是特殊的,但它在字符串中是合法的,所以你可能不得不手动转义它。

$search = str_replace("%", "\%", $search), 

答案 1 :(得分:0)

有些观点:

  • mysql_real_escape_string在这里没有任何用处。命名参数使您无需考虑
  • 使用mysql,您不能使用相同的命名占位符:search,要么在构建PDO时设置:search1:search2两个em ATTRIBUTE_EMULATE_PREPARES=>TRUELIKE}
  • 在PDO中使用%时,您必须确保在提交给占位符的字符串周围传递array(':search' => '%' . $search . '%');:{{1}}