首页 > 解决方案 > 无法通过引用传递参数 2 - Mysql Prepare 语句

问题描述

我有一个 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();

?>

我的第二个问题是在 Loop 中使用 Select 语句的最佳做法是什么。

所以对于每个循环,它都在经历;它将获得一个 ID 并在 select 语句中执行绑定 ID 的 select 语句。

谢谢

标签: phpmysqli

解决方案


错误在这一行:

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

您不能直接将字符串“DOC48599”作为参数传递值,您需要将其存储在变量中,然后将变量传递给bind_param方法。

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

$myParameter = 'DOC48599';
$stmt->bind_param("s", $myParameter);

推荐阅读