我想从带有PHP的mysql数据库中获取结果。
我正在使用这样的查询:
SELECT *
FROM images
WHERE images.name LIKE ? OR images.title LIKE ?
这就是我将参数绑定到查询的方式:
$f_for = "%". $filter_for ."%";
$stmt->bind_param('ss', $f_for, $f_for);
如果我将问号?
替换为编造的搜索字符串,则查询如下所示:
SELECT *
FROM images
WHERE images.name LIKE '%searchForThis%' OR images.title LIKE '%searchForThis%'
并直接执行它(不是 PHP,而是 phpMyAdmin 或直接通过终端),我得到一个正确/肯定的结果(即我返回行,其中搜索字符串与两列之一中的值匹配)。
使用参数化查询,我没有收到任何错误,而只是一个空结果(即零行)。我尝试了不同的字符串格式,但似乎这些都不起作用。
$f_for = "'%". $filter_for ."%'";
$f_for = "%{$filter_for}%";
如何正确绑定参数?我做得完全错了还是另一个问题?
这是
您可以做到的一种方法,它涉及的摆弄要少得多$filter_for
$sql = "SELECT *
FROM images
WHERE images.name LIKE ? OR images.title LIKE ?"
$stmt = $conn->prepare($sql);
$param = "%$filter_for%";
$stmt->bind_param('ss', $param, $param);
我的头要撞到墙上了,我真的很抱歉大家......
查看一般日志,正如 aynber 所建议的那样,我在查询结束时发现LIMIT 0, 0
,因此它将始终返回零行。
我很惭愧我问了这个问题。
请使用这样的串联
$f_for = "'%".$filter_for."%'";