使用准备好的语句从数据库中获取数据时遇到问题

时间:2019-01-17 12:10:24

标签: php mysql

我的数据库名称是'cart'。 表名称是“产品”。 行是'id','name','image','price'。

我收到此错误。

警告:mysqli_stmt_bind_param():变量数与第9行E:\ xammp \ htdocs \ cart \ cart.php中已准备好的语句中的参数数不符

Here is the screenshot

代码在这里

<?php
$connect = mysqli_connect('localhost', 'root', '', 'cart');
$query = "SELECT * FROM `products`";
$stmt = mysqli_prepare($connect, $query);

if($stmt){
    mysqli_stmt_bind_param($stmt, 'issi', $id, $name, $image, $price);
    mysqli_stmt_bind_result($stmt, $id, $name, $image, $price);
    mysqli_stmt_execute($stmt);
    while(mysqli_stmt_fetch($stmt)){
        echo "<pre>";
        echo $id;
        echo "</pre>";
    }
}

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

首先,请不要使用“选择*”,而应始终选择列。

取消注释以下行:

 mysqli_stmt_bind_param($stmt, 'issi', $id, $name, $image, $price);

在绑定结果中不需要参数。

如果您要绑定的SELECT语句中有任何参数,则可以使用mysqli_stmt_bind_param(....),但在这里是不可能的,因此会出现此错误。

此处有更多信息:http://php.net/manual/de/mysqli-stmt.bind-result.php

答案 1 :(得分:0)

如我所见,您没有在查询中使用任何绑定参数,例如“ SELECT * FROM product WHERE price =?AND id =?”

http://php.net/manual/de/mysqli.prepare.php