如何在 PHP 网站上正确显示我的 SELECT 数据?

How can i display my SELECT data correctly in PHP website?

我的数据库工作正常,但我在使用数据并将它们显示在我的 site.php

中时遇到问题

所以在我的 config.php 文件中,我有以下代码:

<?php
/* Database credentials. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
define('DB_NAME', 'xxx');
 
/* Attempt to connect to MySQL database */
$link = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
 
// Check connection
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
?>

在我的 site.php 中,我使用以下代码:

        <?php

        $sql = "SELECT * FROM dish";

        $res = mysqli_query($link, $sql);

        ?>
            <div class="col-md-3">
                <div class="thumbnail">
                    <a href="index.php">
                        <img src="img/gallery/01.jpg" class="rounded-top">
                    </a>
                    <h4 class="text-center my-3"><?php echo $nom ?></h4>
                    <p class="text-center"><?php echo $description ?></p>
                    <a href="index.php?dish_did<?php echo $did; ?>" class="btn btn-success" role="button">Rate Now!</a>
                </div>
            </div>

在我的本地主机中 site.php 我收到以下错误

Warning: Undefined variable $link in C:\xampp\htdocs\Version\site.php on line 39

Fatal error: Uncaught TypeError: mysqli_query(): Argument #1 ($mysql) must be of type mysqli, null given in C:\xampp\htdocs\Version\site.php:39 Stack trace: #0 C:\xampp\htdocs\Version\site.php(39): mysqli_query(NULL, 'SELECT * FROM d...') #1 {main} thrown in C:\xampp\htdocs\Version\site.php on line 39

第 39 行是这样的:

$res = mysqli_query($link, $sql);

如何解决这个问题并在 PHP 中正确使用我的数据库?

看起来你没有使用任何框架,所以如果这是真的,你需要在 site.php 的顶部添加一个 include 语句,像这样

<?php require 'config.php'; ?>

以便 config.php 文件在 site.php 文件的内容被执行之前执行。

但是,我必须补充一点(超出教学目的)您所做的并不是一个好的做法。最好使用像“laminas”或任何其他框架这样的框架,它允许您进行关注点分离、依赖注入、控制反转等。

此外,代码需要一些方法来分配 result-set 中的值。你可以试试这样的

<?php
 while($obj = $res->fetch_object()){
            $description =$obj->description;
            $nom =$obj->nom;
            $did =$obj->did;
?>
            <div class="col-md-3">
                <div class="thumbnail">
                    <a href="index.php">
                        <img src="img/gallery/01.jpg" class="rounded-top">
                    </a>
                    <h4 class="text-center my-3"><?php echo $nom ?></h4>
                    <p class="text-center"><?php echo $description ?></p>
                    <a href="index.php?dish_did<?php echo $did; ?>" class="btn btn-success" role="button">Rate Now!</a>
                </div>
            </div>
<?php
        } 
        $res->close();
?>

假设您的 table 列名称是 description、nom 和 did 你可以阅读结果对象的手册 https://www.php.net/manual/en/class.mysqli-result.php