Php 无法通过引用传递参数2-Mysql Prepare语句
我有一个PHP循环 在循环中,我将有一个Select语句 我犯了一个错误 致命错误:未捕获错误:无法通过引用传递参数2 我不知道我做错了什么 这是我的声明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
$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);