如何在SQL中搜索包含撇号的名称

时间:2018-03-19 01:49:50

标签: php sql apostrophe

我想搜索包含撇号的标题。 我从变量中调用标题。

例如:

$mytitle = "Daddy's Home";

然后我尝试搜索它。

$apostrophe = $val;
$replacementsapostrophe = [
"'" => "''",
];
$newval = strtr($apostrophe, $replacementsapostrophe);

$query2 = $db->prepare ("SELECT category, id_master_post, master_post_name FROM `master_post` WHERE master_post_name = '$newval'");
$query2->execute();
$value2 = $query2->fetch();

给出错误

  

致命错误:未捕获PDOException:SQLSTATE [42000]:语法错误或   访问冲突:1064您的SQL语法有错误;检查   与您的MariaDB服务器版本对应的手册   在家庭2''附近使用的语法在第1行   C:\ xampp \ htdocs \ piratefiles \ list.php:31堆栈跟踪:#0   C:\ xampp \ htdocs \ piratefiles \ list.php(31):PDOStatement-> execute()#1   {main}在第31行的C:\ xampp \ htdocs \ piratefiles \ list.php中抛出

我已经尝试'%''%'仍无效。

1 个答案:

答案 0 :(得分:0)

您应该使用预准备语句来避免sql注入,但要回答您的问题。一个例子;

 try{
   $db=new PDO(DSN,USER,PASS);
 }catch(PDOException $e){
   echo "couldn't connect cos of $e";
}
$sqlQuery = "SELECT category, id_master_post, master_post_name FROM `master_post` WHERE master_post_name = ? "
$prepared= $db->prepare($sqlQuery);
$prepared->execute($myTitle);
$resultObject = $prepared->fetchObject() ;