gpt4 book ai didi

php - 查询while循环中的mysql准备语句

转载 作者:行者123 更新时间:2023-11-30 21:46:11 25 4
gpt4 key购买 nike

我试图在返回查询的 while 循环的每次迭代中运行 mysql 查询。如果我使用普通查询函数 (mysqli_query),它会起作用。但是,如果我将它作为准备好的语句运行,它就不再起作用了。我不确定问题出在哪里。

这是工作代码:

function pagGenerateResult(){

$pgSql = "SELECT * from table1 ;"
$result = $conn->query($pgSql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$var1=$row["r1"] ;
$var2=$row["r2"] ;
$var3=$row["r3"] ;
$var3=$row["r3"] ;

$insertSql= " UPDATE pg_rd SET num1='$var1' ,num2='$var2',num3='$var3' WHERE num4='$var4' ";

mysqli_query($conn,$insertSql);
}
} else {
echo "MySQL Error: 0 result ";
}
$result->free();
$conn->close();
die();
}

如果我将 while 循环中的逻辑更改为如下的准备语句,它就会停止工作。

function pagGenerateResult(){

$conn=new mysqli($servername,$username,$password,$dbname);
$pgSql = "SELECT * from table1 ;"
$result = $conn->query($pgSql);

if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$var1=$row["r1"] ;
$var2=$row["r2"] ;
$var3=$row["r3"] ;
$var3=$row["r3"] ;

$insertSql= " UPDATE pg_rd SET num1=? ,num2=?,num3=? WHERE num4=? ";
//prepared statement
$stmt=mysqli_stmt_init($conn);
if(!mysqli_stmt_prepare($stmt,$insertSql)){
echo "SQL prepared statement error";
}
else{
mysqli_stmt_bind_param($stmt,"fffi",$var1,$var2,$var3,$var4);
mysqli_stmt_execute($stmt);
}

}
// echo $recomSpace. " ". $numPgs. " ". $numSlot;
} else {
echo "MySQL Error: 0 result ";
}
$result->free();
$conn->close();
die();
}

最佳答案

首先,您对 $var3 进行了双重声明(可能您指的是 $var4r4)

 $var1=$row["r1"] ;
$var2=$row["r2"] ;
$var3=$row["r3"] ;
$var3=$row["r3"] ;

其次,除了在 PHP 中使用循环之外,您还可以使用 update-join

update pg_rd p
inner join table1 t on t.r4 = p.num4
set
p.num1 = t.r1,
p.num2 = t.r2,
p.num3 = t.r3
;

关于php - 查询while循环中的mysql准备语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49380433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com