我知道这个问题之前已被问过几次,但我没有看到我的代码有任何问题,但我仍然得到这个错误在我的代码上根本没有意义。
arning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement in line 131
这是我的完整代码:
if($stmt = $db_conx->prepare("SELECT id, product_name FROM yt ORDER by id") ) {
//die( $db_conx->error );
$product_list = "";
$stmt->bind_param("is", $id, $product_name);
if ( ! $stmt->execute() ) {
die( $stmt->error );
}
$stmt->bind_result($id, $product_name);
$stmt->store_result();
while($stmt->fetch()) {
$value[] = array('id'=>$id, 'product_name'=>$product_name);
$product_list .= "<li class='mix ".$product_name."' data-name='".$product_name."'><a href='../product_images/" . $id . "Image1.jpg'>
<img src='../product_images/" . $id . "Image1.jpg'></a>
<h4>".$product_name."</h4>
<br>
</li>
<div style='width:120px;'><a href='edit.php?edit=$id'>Edit this product</a></div>
<br>
<div style='width:120px;'><a href='products.php?delete=$id'>Delete this product</a></div>";
$files = glob('../cache/*'); // get all file names
foreach($files as $file){ // iterate files
if(is_file($file))
unlink($file); // delete file
}
}
}
mysqli_stmt_close($stmt);
这就是第131行:
$stmt->bind_param("is", $id, $product_name);
有什么我想念的吗?
任何帮助或建议都将不胜感激。
提前致谢。
答案 0 :(得分:1)
您尝试将2个参数绑定到没有任何参数的查询:
$stmt = $db_conx->prepare("SELECT id, product_name FROM yt ORDER by id");
$stmt->bind_param("is", $id, $product_name);
如果为它们定义占位符,则只能绑定参数:
$stmt = $db_conx->prepare("SELECT id, product_name FROM where id = ? or product_name = ?");
$stmt->bind_param("is", $id, $product_name);
?
表示可以将参数绑定到的占位符。
答案 1 :(得分:-1)
您正在绑定参数“is”,这在您的sql语句中不存在 编辑:你没有任何“?”占位符