我有一個php函數,它有兩個來自同一個表的查詢。 第一個查詢選擇一些行,第二個查詢必須在一列中選擇後更新選定的行。但不幸的是只有第一個查詢是執行,我不能更新表。如何在一個php函數中使用mysqli運行兩個查詢
這是我的功能代碼:
public function displayNewMessage(){
include "connection.php";
// first query
$displayMsg = $connection->prepare("select date, senderUserName, message from messages where showed = 0 and
((senderUserName = ? and receiverUserName = ?) or (senderUserName = ? and receiverUserName = ?))
order by date desc");
// second query
$checkMsg = $connection->prepare("UPDATE messages SET showed = 1 where showed = 0 and
((senderUserName = ? and receiverUserName = ?) or (senderUserName = ? and receiverUserName = ?))");
// preparation for both query is same
$displayMsg->bind_param("ssss", $senderUserName, $receiverUserName, $receiverUserName, $senderUserName);
$senderUserName=$this->getSenderUserName();
$receiverUserName=$this->getReceiverUserName();
$displayMsg->execute(); // execute first query
$checkMsg->execute(); // execute second query
$displayMsg->store_result();
$displayMsg->bind_result($messageDate, $senderUserName, $message);
while($displayMsg->fetch()){
$this->setSenderUserName($senderUserName);
$this->setMessage($message);
$this->setMessageDate($messageDate);
?>
<span style="color:#00F"> <?php echo $this->getSenderUserName(); ?></span> says: <br />
<?php echo $this->getMessage(); ?>
<div class="date"><?php echo $this->getMessageDate(); ?></div><br />
<?php
}
$displayMsg->free_result();
}
,如果我在函數結束時執行第二查詢,將首先運行,並導致第一次查詢的條件評估爲假,所以它不會選擇任何行。
嗨,如果您將答案標記爲已接受,對社區有幫助。如果答案中沒有答案解決了您的問題,並且您有解決方案,那麼您應該能夠回答自己的問題,並在詢問後48小時後接受該答案。 –