Php 无法通过引用传递参数2-Mysql Prepare语句

Php 无法通过引用传递参数2-Mysql Prepare语句,php,mysql,select,Php,Mysql,Select,我有一个PHP循环 在循环中,我将有一个Select语句 我犯了一个错误 致命错误:未捕获错误:无法通过引用传递参数2 我不知道我做错了什么 这是我的声明 <?php $query = "SELECT customer.id AS customerid,customer.doc, order.id AS orderid ,order.doc FROM customer Inner Join order ON customer.do

我有一个PHP循环

在循环中,我将有一个Select语句

我犯了一个错误

致命错误:未捕获错误:无法通过引用传递参数2

我不知道我做错了什么

这是我的声明

<?php
$query = "SELECT customer.id AS customerid,customer.doc, 
                 order.id AS orderid ,order.doc FROM customer
            Inner Join order ON customer.doc = order.doc
          Where customer.doc= ?";
if ($stmt = $mysqli->prepare($query)) {

    $stmt->bind_param("i", 'DOC48599');

    /* execute query */
    $stmt->execute();

    /* store result */
    $stmt->store_result();

    printf("Number of rows: %d.\n", $stmt->num_rows);

    /* close statement */
    $stmt->close();
}

/* close connection */
$mysqli->close();

?>

我的第二个问题是,在循环中使用Select语句的最佳实践是什么

因此,对于每个循环,它都要经过;它将获得一个ID,并执行select语句绑定select语句中的ID


谢谢

错误在这一行:

$stmt->bind_param("i", 'DOC48599');
不能将字符串“DOC48599”作为参数直接传递值,需要将其存储在变量中,然后将变量传递给
bind_param
方法

您还必须注意传递的参数的类型:如果您的参数是字符串,则需要使用“s”而不是“i”。 看一看


i
代表整数,而
DOC48599
不可能是整数。
$code='DOC48599'
<代码>$stmt->bind_参数(“s”,“$code”)应该可以解决这个问题,但这不是导致错误的原因,而是您需要为参数值传递变量,而不是标量值。“我的第二个问题是,在循环中使用Select语句的最佳实践是什么。”-最佳实践是不使用该语句,但如果可能的话,看看如何将所需的任何数据连接到一个语句中。我已经做到了。谢谢大家。还有一个问题。因为这个select语句在循环中。这是第一次奏效。但是在第二次迭代中,我得到了错误“警告:mysqli::prepare():无法在中获取mysqli”。我怎样才能解决这个问题
$myParameter = 'DOC48599';
$stmt->bind_param("s", $myParameter);