0
if (isset($_POST['update'])){
$db=mysqli_connect("localhost","****","****","****");
$lasttime = isset($_POST['timestamp']) ? $_POST['timestamp'] : 0;
while (1){
sleep(1);
clearstatcache();
$mresult = mysqli_query($db,"SELECT * FROM tblchat WHERE msg_datetime > $lasttime");
if (!empty($mresult)){ break; }
}
$msgs = array();
while ($row = mysqli_fetch_object($mresult)) { $msgs[] = $row; }
mysqli_free_result($mresult);
$response = array();
$response['msgs'] = $msgs;
echo json_encode($response);
flush();
mysqli_close($db);
exit();
}
該代碼是與客戶端進行長輪詢連接的服務器。如果請求更新,則while循環將檢查隨更新請求一起發送的時間戳後收到的任何新消息。如果找到,它會將結果放入數組中並將其回顯給客戶端。 由此產生的輸出是這樣的[msgs:[{msg_from:"",msg_to:"",msg:"",msg_datetime:""},{msg_from:"",msg_to:"",msg:"",msg_datetime:""}]]
MYSQLi SELECT抓取對象
該代碼第一次正常工作,併發送所有最近消息封裝良好,但它再次發送一個空的消息數組。請指導我。
不錯的SQL注入 –
很高興看到人們遷移到MySQLi或PDO,但他們不斷注入他們的變量直接查詢,而不是正確地使用準備好的語句;( – Prix
可以請你只是重寫我的代碼中的兩個查詢正確,我想一次學習如何防止SQL注入 –