[英]how to use all mysql query results in php
我需要获取并更新查询的所有结果,我得到所有结果,但它只更新第一个结果,为什么? 提前致谢。
$result=mysql_query(" SELECT text FROM sess WHERE dest='$name' AND mitt='$mitt' AND read='0' ORDER BY idm ");
while($row = mysql_fetch_array($result)){
$messages[]=$row[$i];
$mess= mysql_real_escape_string($row[$i]);
mysql_query(" UPDATE sess SET read='1' WHERE dest='$name' AND mitt='$mitt' AND text='$mess' ");
$i++;
}
您需要访问结果行的第一个索引。
$result=mysql_query(" SELECT text FROM sess WHERE dest='$name' AND mitt='$mitt' AND read='0' ORDER BY idm ");
while($row = mysql_fetch_array($result)){
$messages[]=$row[0];
$mess= mysql_real_escape_string($row[0]);
mysql_query(" UPDATE sess SET read='1' WHERE dest='$name' AND mitt='$mitt' AND text='$mess' ");
$i++;
}
注意:不推荐使用mysql_*
的函数。 有一些替代品, mysqli_*
是直接替代品。 在这里阅读更多
注意2:使用消息的ID将消息设置为已读。 使用文本内容效率低下。
UPDATE sess SET read='1' WHERE message_id = $messageId
为什么不这样做呢
UPDATE sess SET read='1' WHERE dest='$name' AND mitt='$mitt' AND read='0' ?
试试看:
while($row = mysql_fetch_array($result)){
mysql_query(" UPDATE sess SET read='1' WHERE dest='$name' AND mitt='$mitt' AND text='".$row['text']."' ");
}
或这个:
while($row = mysql_fetch_assoc($result)){
$id = mysql_real_escape_string($row['id']);
mysql_query("UPDATE sess SET read='1' WHERE `id` = '$id' ");
}
尝试这个
$result=mysql_query("SELECT id ,text FROM sess WHERE dest='$name' AND mitt='$mitt' AND read='0' ORDER BY idm ");
while($row = mysql_fetch_assoc($result)){
$messages[]=$row['text'];
$id = mysql_real_escape_string($row['id']);
mysql_query("UPDATE sess SET read='1' WHERE `id` = '$id' ");
$i++;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.