【发布时间】:2010-12-03 00:23:07
【问题描述】:
我需要多加注意这个问题。任何帮助将不胜感激。这是一个非常简单的搜索查询,但无论出于何种原因,我都找不到错误。好吧,我知道错误在哪里。我只是无法克服它。反正.....
我正在从 POST 变量中获取搜索值,设置该变量,然后按如下方式设置列变量...
$term = "'%".$_POST['searchTerm']."%'";
$field = "columnName";
当我回应这些时,它们会完美呈现。因此,如果我在表单中输入“a”,我将回显 '%a%' 和 columnName。
然后我准备查询并绑定参数如下...
$suquery=$dbCon->prepare("select * from Table where ? LIKE ?");
$suquery->bind_param('ss', $field, $term);
$suquery->execute();
结果总是返回 0 行。当我玩这个时,我发现没有一个绑定参数正常工作,即使它应该回显。例如,当我更改查询以使列被硬编码并且只绑定搜索词时......
$suquery=$dbCon->prepare("select * from Table where columnName LIKE ?");
$suquery->bind_param('s', $term);
$suquery->execute();
我仍然得到零返回行。这告诉我,即使 $field 回显为 '%a%' 某些东西仍然关闭。我真的很茫然。同样,当我硬连线搜索词并绑定列时......
$suquery=$dbCon->prepare("select * from Table where ? LIKE '%a%'");
$suquery->bind_param('s', $field);
$suquery->execute();
返回的行太多。它实际上是从表中提取行,其中任何列中的值都包含字母“a”。因此,列或术语都没有正确绑定。五月天!
【问题讨论】:
标签: php mysql mysqli sql-like parameterbinding