php - 在 PHP 中解析和回显 SQL 结果

标签 php mysql parsing

在学习了一些在线教程之后,我正在尝试编写一个简单的 PHP 留言簿。我可以毫无问题地写入数据库;但是,当我尝试解析现有评论并将它们“回显”回页面时,我没有看到任何显示。

这有明显的原因吗?

(有问题的代码从 “现有评论:” 开始)

<?php
require_once('includes/config.inc.php');
define('DB_GUEST','guestbook_db');

// Connect
$mysqli = @new mysqli(DB_HOSTNAME,DB_USERNAME,DB_PASSWORD,DB_GUEST);

// Check connection 
if (mysqli_connect_errno()) { 
printf("Unable to connect to database: %s", mysqli_connect_error()); 
exit(); 
} 

// POST
if($_SERVER['REQUEST_METHOD'] == 'POST') {
    $now = time();
    $name=($_POST['name']);
    $message =($_POST['message']);

$sql = "insert into comments (name,message,timestamp) values  ('$name','$message','$now')";

    $result = $mysqli->query($sql) or die($mysqli->error.__LINE__);
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Guest Book</title>
</head>
<body>

<h3>Post A Comment:</h3>
<form action="index.php" method="post">
   <strong>Name:</strong><br/> <input type="text" name="name" /><br/>
   <strong>Comment:</strong><br/> <textarea name="message" rows="5" cols="25">           
<textarea><br/>
<input type="submit" value="Go">
</form>

<h3>Exisiting Comments:</h3>

<?php
$sql1 = "select * from guestbook_db.comments";
$allPostsQuery = $mysqli->query($sql1) or die($mysqli->error.__LINE__);

if(!mysql_fetch_rows($allPostsQuery)) {
    echo "No comments were found!";
} else {
while($row = mysql_fetch_assoc($allPostsQuery)) {
echo "<b>Name:</b> {$comment[1]} <br/>";
echo "<b>Message:</b> {$comment[2]} <br/>";
echo "<b>Posted at:</b> " .date("Y-d-m H:i:s",$comment[3]). " <br/><hr/>";
    }
}
?>
</body>
</html>

最佳答案

好吧,首先我必须就使用 $_POST 发出强制性警告直接变量。您的用户可以在那里放任何东西,包括 SQL 注入(inject)字符串。使用 PDO 或使用 mysqli 参数化来清理数据.

除此之外,您正在使用变量

$comment

什么时候应该使用

$row

因为这就是您在 while 循环中命名记录变量的名称。此外,您已调用 mysql_fetch_assoc (也应该是 mysqli 的 fetch_assoc(),您将 mysqlmysqli 混淆 - 使用 mysqli 的)它返回一个关联数组,而不是您在调用 $comment[1] 时假设的编号为 1 的索引例如。

简而言之,只是一些愚蠢的错误,但也去阅读 PHP 上的文档 mysqli关于SQL injection .

关于php - 在 PHP 中解析和回显 SQL 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17573084/

相关文章:

ios - Swift - 更新到 Parse SDK 1.7.4 后 - 错误消息

php - 错误未记录到php错误日志中

php - 如何将php文件调用到div中?

PHP 动态变量作为 jQuery 选择器

mysql - Excel日期转Mysql日期

python - 解析 PDF 文档中的表格

php - Doctrine :具有复合键的实体之间的 ManyToX 关系

php - 照亮\数据库\QueryException : SQLSTATE[HY000] [2002] Connection refused default character set utf8mb4 collate utf8mb4_unicode_ci

php - 如何在 JavaScript 函数中使用 MySQL DB 数据?

parsing - 如何使用 Parsec 通过特定字符串分隔字符串