LIKE 语句在 PDO 中不能正常工作
LIKE Statement not Working Properly in PDO
我有这段代码 return 从我的数据库中搜索结果:
$search_stmt = $dbConnection->prepare("SELECT * from `books` WHERE `title` LIKE '%testing1234%' ORDER BY `rating` DESC, `title` ASC LIMIT 1000");
这是我的数据库的一部分:
---------------------
| id |title |
---------------------
| 1 |testing1234 |
---------------------
| 2 |Testament... |
---------------------
那 return 我的 table 没有任何东西。
将 testing1234
替换为 testing
,这 return 行 1
。
我也试过用 test
替换 testing1234
,这 return 两行。
我也用 REGEXP 'testing1234'
替换了 LIKE '%testing1234%'
,但是我用 REGEXP
得到的结果与我用所有 LIKE
语句得到的结果相同。
当我将原始查询放入 Sequel Pro 时,它 return 行 1
。
所以我的结论是我没有正确使用 PDO,如果能帮助我朝着正确的方向前进,我们将不胜感激!
答案是确保在建立与数据库的连接时定义了 charset
。
这是连接的原始代码:
$dbConnection = new PDO('mysql:host=' . $db_host . ';dbname=' . $db_name . '', $db_user, $db_pass);
应该这样做:
$dbConnection = new PDO('mysql:host=' . $db_host . ';dbname=' . $db_name . ';charset=utf8', $db_user, $db_pass);
我有这段代码 return 从我的数据库中搜索结果:
$search_stmt = $dbConnection->prepare("SELECT * from `books` WHERE `title` LIKE '%testing1234%' ORDER BY `rating` DESC, `title` ASC LIMIT 1000");
这是我的数据库的一部分:
---------------------
| id |title |
---------------------
| 1 |testing1234 |
---------------------
| 2 |Testament... |
---------------------
那 return 我的 table 没有任何东西。
将 testing1234
替换为 testing
,这 return 行 1
。
我也试过用 test
替换 testing1234
,这 return 两行。
我也用 REGEXP 'testing1234'
替换了 LIKE '%testing1234%'
,但是我用 REGEXP
得到的结果与我用所有 LIKE
语句得到的结果相同。
当我将原始查询放入 Sequel Pro 时,它 return 行 1
。
所以我的结论是我没有正确使用 PDO,如果能帮助我朝着正确的方向前进,我们将不胜感激!
答案是确保在建立与数据库的连接时定义了 charset
。
这是连接的原始代码:
$dbConnection = new PDO('mysql:host=' . $db_host . ';dbname=' . $db_name . '', $db_user, $db_pass);
应该这样做:
$dbConnection = new PDO('mysql:host=' . $db_host . ';dbname=' . $db_name . ';charset=utf8', $db_user, $db_pass);