【问题标题】:Pdo undefined index and invalid parameter numberpdo 未定义索引和无效参数号
【发布时间】:2014-05-15 15:51:08
【问题描述】:

我正在尝试开发一个基本的搜索系统,但我的 pdo 语句将我的 $_SESSION 添加到 sql 语句时遇到了问题。

我遇到的错误:

注意:未定义索引:where in -> $readNews = $pdo->prepare("SELECT * from news $_SESSION[where] ORDER BY data");

警告:PDOStatement::execute(): SQLSTATE[HY093]:无效参数编号:绑定变量的数量与 -> $readNews 中的标记数量不匹配->执行();

有人看到我做错了什么?

if(isset($_POST['sendForm']))
    {
        $search = $_POST['search'];
        if(!empty($search) && $search != 'Title:')
        {
            $_SESSION['where'] = "WHERE title LIKE ?";
        }
        else
        {
            unset($_SESSION['where']);
        }

    }

PDO 语句:

    $readNews = $pdo->prepare("SELECT * from news $_SESSION[where]  ORDER BY date");  
    $readNews->bindValue(1, "%$search%");
    $readNews->execute();

我已经用普通的 mysql 做了这个,像这样 它的工作原理:

"select * from news {$_SESSION[where]} ORDER BY date DESC";

但现在我正在尝试使用 PDO..

【问题讨论】:

  • 您的WHERE title LIKE ? 中的? 似乎需要某种字符串才能传递给它,这可能会导致您的问题
  • 如果它与旧 mysql 一起使用,那么它也可以与 PDO 一起使用。您的问题在于会话,而不是 PDO。如果你还没有注意到
  • 感谢您的回答,但我看不出会话问题出在哪里,对我来说看起来是正确的!
  • 它用简单的英语说:未定义的索引:哪里。意味着你有会话问题,你期望这样的索引。
  • 我知道,我只是不明白为什么我的会话数组是空的!

标签: php mysql sql pdo


【解决方案1】:

未定义索引:其中表示您的 $_SESSION 数组中没有此类项目

【讨论】:

    【解决方案2】:

    $_SESSION[where] 应该是{$_SESSION['where']}

    其他明智的解释器尝试将where 查找为常量。

    if(isset($_POST['sendForm']))
        {
            $search = $_POST['search'];
            if(!empty($search) && $search != 'Title:')
            {
                $_SESSION['where'] = "WHERE title LIKE ?";
            }
            else
            {
                $_SESSION['where']='';//changed here because you are trying to access it
            }
    
        }
    

    $readNews = $pdo->prepare("SELECT * from news {$_SESSION['where']}  ORDER BY date");
    

    【讨论】:

    • 谢谢,但我已经尝试过:{$_SESSION['where']} 我遇到了同样的问题!
    • 为什么解释器找不到fromnews 作为常量?
    • 这样我还有 1 个错误:使用未定义的常量在哪里
    • @YourCommonSense 可能你会看到这个<?php session_start();$_SESSION['where']='yes';echo $_SESSION[where];
    • 是一个基本的搜索系统,搜索我在我的数据库中注册的新闻标题!
    猜你喜欢
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 2016-12-15
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多