簡體   English   中英

如何在php中使用所有mysql查詢結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM