FOR 内的 PHP mysql_query 仅适用于第一个循环

标签 php mysql loops for-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 注入(inject)。

$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/text 类型,只需将 bind_param() 中的“i”替换为“s”即可>.

关于FOR 内的 PHP mysql_query 仅适用于第一个循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23012002/

相关文章:

jquery - 使用 jQuery 仅获取特定行中的 <td> 值

php - 如何删除mysql中以正则表达式开头的内容?

sql - 从 MySQL 迁移到任意符合标准的 SQL2003 服务器

mysql - GRANT 权限检查对 MySQL 性能有多大影响?

javascript - 循环保存到 MongoDB

arrays - Swift 按特定顺序加入 2 个数组

php - SQL 子查询或 JOIN

php - 如何使用 Facebook 作为我网站的网关

php - 自动刷新html页面中的php变量

php - 需要帮助修复 PHP Ajax Jquery Sql 动态下拉列表