簡體   English   中英

使用PHP和MySQL在字符串中包含特殊字符時無法搜索

[英]Could not search when special character is in the string using PHP and MySQL

我需要使用Like關鍵字從表中搜索值,而我在文本中放置特殊字符時未顯示任何結果。 我在下面解釋我的查詢。

$name="Henna*/"
$sname='%'.$name.'%'; 
$sql="select * from cn_user_login name like '".$sname."' order by login_id desc";

我正在解釋下面的表格。

cn_user_login:

login_id       name                  status

 1             Heena Mohanty           1

 2            Heena raj                1

 3            Heena@                   1

 4            Heena*                   1

這里沒有搜索結果。 在這里,我不需要任何特殊字符是否與某個/所有字母匹配,結果就應該出現。

您可以嘗試這樣做。.刪除特殊字符

$name="Henna*/";
$sname = preg_replace('/[^A-Za-z0-9\-]/', '', $name);

$sql="select * from cn_user_login where name like '%".$sname."%' order by login_id desc";

嘗試使用常規期望值進行替換

$name = preg_replace('/[^A-Za-z0-9\-]/', '', $name);

要么

 $name = preg_replace('/[^A-Za-z0-9\-\']/', '', $name);

如果您知道字符,則使用str_replace()函數

$name = str_replace("your character", '', $name);

更好的解決方案是使用PDO中准備好的語句

您可以這樣寫:

$sql = 'select * from cn_user_login name like :param_name order by login_id desc';
$paramName = '%'.$name.'%';

$db = new PDO('dsn_string', 'user', 'password');
$stm = $db->prepare($sql);
$stm->execute([':param_name' => $paramName]);
$result = $stm->fetchAll();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM