【发布时间】:2014-06-11 00:56:09
【问题描述】:
在我的 news.php 文件中,我有以下代码,如果用户发送此字段,则使用我的 $search 变量读取我的函数 Paginator。如果用户没有发布我的输入,我会打电话给我的 Paginator
没有$search 变量。
if(isset($_POST['search']) && $_POST['search'] != 'Search:'){
$search = $_POST['search'];
Paginator('news', "WHERE title LIKE ? ORDER BY date DESC", $max, $link, $pag, $search);
}
else{
Paginator('news', "ORDER BY date DESC", $max, $link, $pag);
}
然后在我的函数 Paginator 中,我想做一个不同的选择,这取决于我是否传递了我的变量 $search(如果用户发布了这个变量)。
所以下面是我做分页器的功能:(但我只把对我的问题重要的部分功能放在这里)
function Paginator($table, $cond, $max, $link, $pag, $search = NULL){
$pdo = conect();
if($search){
$read = $pdo->prepare("SELECT * FROM {$table} {$cond}");
$read->bindValue(1,"%$search%",PDO::PARAM_STR);
$read->bindParam(2,$table,PDO::PARAM_STR);
$read->bindParam(3,$cond,PDO::PARAM_STR);
}
else{
$read = $pdo->prepare("SELECT * FROM {$table} {$cond}");
$read->bindParam(1,$table,PDO::PARAM_STR);
$read->bindParam(2,$cond,PDO::PARAM_STR);
}
$read->execute();
}
这是我的表格:
<form name="searchpost" action="" method="post">
<input type="text" name="search" onclick="if(this.value=='Search:')this.value=''" onblur="if(this.value=='')this.value='Search:'" value="Search:" />
<input type="submit" value="Search" name="sendForm" />
</form>
但我总是遇到这个错误:
警告:PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number:绑定变量的数量与我的函数 Paginator in $read->execute() 中的标记数量不匹配;
你能帮忙找出我做错了什么吗?
【问题讨论】:
-
$table和$cond不应绑定到查询。 -
那么,当您的查询只有一个变量时,为什么还要绑定 3 个变量呢?表名不能绑定