如何在 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
我的数据库工作正常,但我在使用数据并将它们显示在我的 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