LIKE声明在PDO中无法正常工作

时间:2015-04-14 19:10:04

标签: php mysql pdo sql-like

我有这段代码从我的数据库中返回搜索结果:

$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...  |
---------------------

这不会从我的桌子上返回任何内容。

testing1234替换testing,这会返回1行。

我也尝试用testing1234替换test,这会返回两行。

我还将LIKE '%testing1234%'替换为REGEXP 'testing1234',但我得到REGEXP的结果与我所有的LIKE语句相同。

当我将原始查询放入Sequel Pro时,它会返回行1

所以我的结论是我没有正确使用PDO,我会非常感谢能帮助我朝正确方向前进的任何帮助!

1 个答案:

答案 0 :(得分:0)

答案是确保在建立与数据库的连接时定义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);