【发布时间】:2016-02-12 15:33:27
【问题描述】:
我正在尝试为网站创建搜索功能,并创建了从 PHPMYADMIN 生成的 sql 代码,见下文;
$sql = "SELECT * FROM `bg85ow`.`sessions` WHERE CONVERT(`SessionName` USING utf8) LIKE '%:SessionName1%'";
这是处理查询的 PHP 代码;
//bind params
$SessionName1 = filter_input(INPUT_GET, 'search');
$stmt -> bindValue(':SessionName1', $SessionName1, PDO::PARAM_STR);
//execute
$success = $stmt -> execute();
if (!$success){
print $stmt->errorInfo()[2]; //PDO driver error message
}
else{
}
//array
$r = $stmt->fetchAll(PDO::FETCH_ASSOC);
$dbh = null;
if(!$r)
{
echo "No Results";
}
foreach ((array) $r as $row) {
echo $row['SessionId'];
echo $row['SessionName'];
}
由于某种原因,这不会返回任何结果,execute 部分工作正常并通过了成功测试,但是一旦到达数组,它就不会返回任何结果。
我查了一下,$SessionName1 中有来自搜索的术语,所以它被传递到查询中。
当我将 %:SessionName1% 更改为 football 这是我正在测试的搜索词时,代码可以正常返回结果,但一旦改回 :SessionName1,即使搜索词是完全一样。
任何人都可以看到我做错了什么吗,我花了很长时间看这个并且看不到错误。
我到处寻找答案,但找不到特定于这个问题的答案,而且我是 PHP 和 SQL 的初学者。
【问题讨论】:
-
可能是您在
$stmt -> bindValue(':SessionName1', $SessionName1, PDO::PARAM_STR);中输入错误...您在字符串中绑定SessionName1位置而不是SessionName... 即必须是这样的:@987654332 @ -
你必须使用正确的 sessionName。
-
拼写错误是just and error,我复制的时候,我剪掉了一些,然后手动输入回来,在代码中实际上是
%:SessionName1%