【发布时间】:2015-01-09 15:32:18
【问题描述】:
如果我尝试WHERE email = ?,它可以工作,但如果我尝试下面的代码,它不会。有任何想法吗?谢谢。
DB::connection('operator')->select("SELECT * FROM users WHERE email LIKE '%?%'", array('test'));
这就是getQueryLog() 的样子。
array(3) {
["query"]=>
string(213) "SELECT * FROM users WHERE email LIKE '%?%'"
["bindings"]=>
array(1) {
[0]=>
string(1) "test"
}
["time"]=>
float(1.45)
}
【问题讨论】:
-
问题是如果它使用 PDO 进行绑定,那么您会遇到问题,因为 PDO 会自动将参数括在单引号中,从而在服务器上执行查询时导致查询看起来像
SELECT * FROM users WHERE email LIKE '%'test'%'。 -
为什么不使用 Laravel ORM 或 QueryBuilder?
-
@ITroubs:这不是 pdo 的错。首先不能引用占位符。
foo='?'是字符串文字问号,foo=?是占位符。 -
@MarcB 嗯,你是对的。我的错。
标签: php select laravel sql-like