2016-02-05 125 views
0

我想从PHP获取mysql数据库的结果。绑定参数到mysql查询

我使用的查询像这样的:

SELECT * 
FROM images 
WHERE images.name LIKE ? OR images.title LIKE ? 

而且这是我的参数绑定到查询:

$f_for = "%". $filter_for ."%"; 
$stmt->bind_param('ss', $f_for, $f_for); 

如果我更换questionmarks ?用组成搜索字符串,因此查询如下所示:

SELECT * 
FROM images 
WHERE images.name LIKE '%searchForThis%' OR images.title LIKE '%searchForThis%' 

并直接执行它(不是PHP,但phpMyAdmin或直接通过终端),我得到一个正确的/积极的结果(即我得到的行,搜索字符串匹配的两列之一的值)。


使用参数化查询我没有得到任何错误,但只是一个空的结果(即零行)。我尝试了不同的字符串格式,但它们似乎都不起作用。

$f_for = "'%". $filter_for ."%'"; 
$f_for = "%{$filter_for}%"; 

如何正确绑定参数?我是否完全错误或可能是另一个问题?

+0

您是否检查过文档? http://php.net/manual/en/mysqli-stmt.bind-param.php – hdost

+0

我做了,但我找不到任何可能的错误... – user5888833

+1

由于'bind_param'通过引用绑定参数,它*可能*如果你使用'pdo',你可以尝试使用'bind_value()',或者简单地创建两个保存相同值的变量,例如: '$ f_for1'和'$ f_for2' – CD001

回答

0

我就要打我的头靠在我真的对不起每个人...

看着一般日志,由aynber建议,我发现LIMIT 0, 0在我的查询结束,所以它会alwa ys返回零行。

我很惭愧,我问了这个问题。

+0

我很喜欢这只是为了facepalm时刻...我们都去过那里! :D – CD001

+0

请不要...... – user5888833

+0

我已经解决了很多问题,只是通过记录查询!你开始专注于你对其余部分失明的问题的一部分。 – aynber

1

这是你能做到这一点的一种方法,它涉及少了很多摆弄与$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); 
+0

恩,我得到一个致命的错误,就像这样:'致命的错误:不能通过参考传递参数1' – user5888833

+0

你正在做一个准备在我假设? – RiggsFolly

+0

那有什么更好的?对不起,我的错误,它不会因为某种原因传递非变量 – RiggsFolly

-3

请使用串连这样

$f_for = "'%".$filter_for."%'"; 
+0

你不需要前导和尾随单引号 – RiggsFolly

+0

bind_param根据需要添加引号。 – aynber