【发布时间】: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。如果你还没有注意到
-
感谢您的回答,但我看不出会话问题出在哪里,对我来说看起来是正确的!
-
它用简单的英语说:未定义的索引:哪里。意味着你有会话问题,你期望这样的索引。
-
我知道,我只是不明白为什么我的会话数组是空的!