【问题标题】:PHP PDO & SQL Search wildcard bind parametersPHP PDO & SQL 搜索通配符绑定参数
【发布时间】: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%

标签: php mysql pdo


【解决方案1】:

试试这个例子:检查你错在哪里。

// Get the keyword from query string
$keyword = $_GET['keyword'];
// Prepare the command
$sth = $dbh->prepare('SELECT * FROM `users` WHERE `firstname` LIKE :keyword');
// Put the percentage sing on the keyword
$keyword = "%".$keyword."%";
// Bind the parameter
$sth->bindParam(':keyword', $keyword, PDO::PARAM_STR);

【讨论】:

  • 好的,所以我尝试了这个并收到了这条消息Notice: Undefined index: SessionName in D:\xampp\htdocs\PPW4\SearchSessions.php on line 9 它确实返回了表格中的所有内容,但不返回搜索查询
  • 好的,修复了它在变量名中出现错误,感谢您的帮助
  • 我已经在问题的 cmets 中提到过,:--> 你必须使用正确的 sessionName。反正你做到了。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-20
  • 2019-12-10
  • 1970-01-01
  • 2013-01-30
  • 2012-08-01
  • 2011-07-14
  • 1970-01-01
相关资源
最近更新 更多