首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅适用于第一个循环的PHP mysql_query

问仅适用于第一个循环的PHP mysql_query
EN

Stack Overflow用户
提问于 2014-04-11 12:01:24
回答 1查看 255关注 0票数 0

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

代码语言:javascript
复制
$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);

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-11 12:17:43

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

我给出了一个例子,它也是针对SQL注入的安全。

代码语言:javascript
复制
$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();

提示:如果notif或sn_rec是varchar/text类型,只需将bind_param()中的'i‘替换为's’。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23012002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档