php 变量数与预准备语句中的参数数不匹配

u2nhd7ah  于 2023-05-16  发布在  PHP
关注(0)|答案(3)|浏览(129)

我没有看到我的代码有任何问题,但我仍然在我的代码中得到这个错误,这根本没有意义。
注意:mysqli_stmt::bind_param():变量的数量与第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);

我是不是漏掉了什么

pn9klfpd

pn9klfpd1#

您尝试将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);

?表示可以绑定参数的占位符。

mwg9r5ms

mwg9r5ms2#

我得到了同样的错误,但我的问题只是,我使用了thicks,我没有注意到这一点。Ofc,在这种情况下我的?是一个字符串,而不是一个变量...,我希望它能帮助别人,所以使用这个:
SELECT * WHERE langCode =?
而不是这样:
SELECT * WHERE langCode = '?”

zazmityj

zazmityj3#

你正在绑定参数“is”,它在你的sql语句编辑中不存在:而你却一点都没有““占位符
msqli_stmt::bind_param

相关问题