我正在尝试使用PHP和SQL创建一个使者 这是我的代码
<form action="send_post.php" method="post">
<h3>Name:</h3>
<input type="text" name="name">
<h3>Message:</h3>
<input type="text" name="message">
<input type="submit">
</form>
<?php
$servername = "servername";
$username = "username";
$password = "password";
$dbname = "dbname";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT id, name, message FROM chat";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
while(1){
ob_start();
echo "" . $row["name"]. " - " . $row["message"]. "<br>";
sleep(10);
echo "" . $row["name"]. " - " . $row["message"]. "<br>";
ob_end_clean();
}
}
}
$conn->close();
?>
然而这不起作用,有什么理由吗? 一旦我添加了无限循环来刷新消息,问题便开始了。
答案 0 :(得分:1)
PHP工作于服务器,这意味着客户端(访客)请求服务器然后“编译”的页面然后作为客户端语言(如HTML)发送到客户端。如果PHP代码永远不会达到结束/停止,则客户端浏览器会认为服务器停止响应并发出错误。
要实现您的目标,您可能需要查看JQuery AJAX之类的内容,它允许客户端从主请求中单独从服务器获取数据。这样,您可以使用一个文件仅显示消息并在计时器上请求该文件,同时使表单像往常一样加载页面。但是,您也可以使用JQuery AJAX
使表单动态化更新您可以查看此blogpost以了解我在说什么。