Pdo未定义索引和无效参数号

时间:2014-04-03 16:49:01

标签: php mysql sql pdo

我正在尝试开发一个基本的搜索系统,并且我的pdo语句在我的$ _SESSION中添加了一个问题。

我得到的错误:

注意:未定义索引:其中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 ..

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

$_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");