繁体   English   中英

FOR内的PHP mysql_query仅在第一次循环时有效

[英]PHP mysql_query inside FOR only works first loop

我正在尝试更新mysql数据库中一些不同的寄存器,这些数据库从php中的FOR循环发送命令,但是查询仅在第一个循环中完成。 这是代码:

$conexion = mysql_connect($hostname, $user, $pass) or die ("Error establishing connection with the Database");
mysql_select_db($db,$conexion) or die("Error selecting the Database");
$j=0;
for ($i=0;$i<count($notifs);$i++){
$sql="UPDATE tef SET notif='$notifs[$i]' WHERE sn_rec='$unsersn_recs[$j]';";
echo $sql."<br>";
$res=mysql_query($sql, $conexion) or die (mysql_error());           
$j++;
}
mysql_close($conexion);

查询文本正确完成(回显显示了创建的不同行),但是数据库中的更改仅在第一个循环(第一个查询)中完成,并且我没有收到任何错误。 我可能会缺少什么? 提前致谢!

这是一个很好的示例,您应该使用准备好的语句。

我举一个例子,它也可以防止SQL注入。

$mysqli = new mysqli($hostname, $user, $pass, $db);

if (mysqli_connect_errno()) {
    die("Error establishing connection!");
}

$stmt = $mysqli->prepare("UPDATE tef SET notif=? WHERE sn_rec=?");

$j=0;
for ($i=0;$i<count($notifs);$i++) {
    $stmt->bind_param('ii', $notifs[$i], $unsersn_recs[$j]);
    $stmt->execute();
    if(!empty($stmt->error)) echo $stmt->error;
    $j++;
}
$stmt->close();

$mysqli->close();

提示:如果notifsn_rec是VARCHAR /文种,只需更换“我”与一个“S” bind_param()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM