PhP mysql - 如何显示数据库中的记录?
PhP mysql - how to show records from database?
这是我在这个社区的第一个 post。我是 PHP 和 MySQL 的新手。这是我要运行的代码。
我正在使用 MAMP。我已经测试过我能够与 "pet" 数据库建立连接。检查了我的用户名和密码,也是正确的。我在数据库中有 "horse" 字段 "petType" 的数据。
下面的代码肯定有问题。我挠头看了看书和网上,但无法弄清楚我做错了什么?使用下面的代码,我的网页变成空白。
我正在尝试将数据库中的记录作为第一部分显示,稍后担心格式化。
<?php
$host = 'localhost';
$username = ' ';
$password = ' ';
$database = 'pet';
$conn = mysqli_connect($host, $username, $password, $database);
$query= "SELECT * FROM pet WHERE petType = 'horse'";
while($row = mysqli_fetch_array($query)):
{
$petDescription = $query [$petDescription];
$petName = $query [$petName];
$petType = $query [$petType];
echo "$petType <br> <br> $petName <br> $petDescription";
}
?>
好的,这是概要。
您没有查询。这意味着您需要使用 mysqli_query()
function, which requires a successful DB connection 建立并作为第一个参数传递。
然后您在 while
循环中分配 $row
以获取数组,但您使用 $query
作为预期行的替换被回声。应该是 $row
而不是 $query
.
(编辑)你在 while($row = mysqli_fetch_array($query)):
中也有一个冒号 <= 删除它。
现在,很难确定 table 中的实际列名是什么,所以我将用通用的 column_x
、column_y
和column_z
目前。
您可以将它们替换为您 table 中的那些。下面会详细介绍这一点。
用以下内容替换您当前的代码块:
$query = mysqli_query($conn, "SELECT * FROM pet WHERE petType = 'horse'");
while($row = mysqli_fetch_array($query))
{
$petType = $row['column_x'];
$petName = $row['column_y'];
$petDescription = $row['column_z'];
echo "$petType <br> <br> $petName <br> $petDescription";
}
如果你的其他栏目确实叫petType
、petName
和petDescription
,那么你可以将上面的替换为:
$petType = $row['petType'];
$petName = $row['petName'];
$petDescription = $row['petDescription'];
它的工作原理是这样的,我用图形的方式展示给大家:
$petType = $row['petType'];
^ ^ ^
| | | column name in table
| |
| | variable in loop
|
| variable to echo
但是,有些事情似乎有点不清楚,您的数据库和 table 都具有相同的名称 pet
。
确保确实如此。
将 or die(mysqli_error($conn))
添加到 mysqli_query()
。
旁注:错误报告只能在试运行中进行,绝不能在生产中进行。
脚注:
考虑使用 mysqli
with prepared statements, or PDO with prepared statements,它们更安全。
否则,你会开SQL injection.
这是我在这个社区的第一个 post。我是 PHP 和 MySQL 的新手。这是我要运行的代码。
我正在使用 MAMP。我已经测试过我能够与 "pet" 数据库建立连接。检查了我的用户名和密码,也是正确的。我在数据库中有 "horse" 字段 "petType" 的数据。
下面的代码肯定有问题。我挠头看了看书和网上,但无法弄清楚我做错了什么?使用下面的代码,我的网页变成空白。
我正在尝试将数据库中的记录作为第一部分显示,稍后担心格式化。
<?php
$host = 'localhost';
$username = ' ';
$password = ' ';
$database = 'pet';
$conn = mysqli_connect($host, $username, $password, $database);
$query= "SELECT * FROM pet WHERE petType = 'horse'";
while($row = mysqli_fetch_array($query)):
{
$petDescription = $query [$petDescription];
$petName = $query [$petName];
$petType = $query [$petType];
echo "$petType <br> <br> $petName <br> $petDescription";
}
?>
好的,这是概要。
您没有查询。这意味着您需要使用
mysqli_query()
function, which requires a successful DB connection 建立并作为第一个参数传递。然后您在
while
循环中分配$row
以获取数组,但您使用$query
作为预期行的替换被回声。应该是$row
而不是$query
.
(编辑)你在 while($row = mysqli_fetch_array($query)):
中也有一个冒号 <= 删除它。
现在,很难确定 table 中的实际列名是什么,所以我将用通用的 column_x
、column_y
和column_z
目前。
您可以将它们替换为您 table 中的那些。下面会详细介绍这一点。
用以下内容替换您当前的代码块:
$query = mysqli_query($conn, "SELECT * FROM pet WHERE petType = 'horse'");
while($row = mysqli_fetch_array($query))
{
$petType = $row['column_x'];
$petName = $row['column_y'];
$petDescription = $row['column_z'];
echo "$petType <br> <br> $petName <br> $petDescription";
}
如果你的其他栏目确实叫petType
、petName
和petDescription
,那么你可以将上面的替换为:
$petType = $row['petType'];
$petName = $row['petName'];
$petDescription = $row['petDescription'];
它的工作原理是这样的,我用图形的方式展示给大家:
$petType = $row['petType'];
^ ^ ^
| | | column name in table
| |
| | variable in loop
|
| variable to echo
但是,有些事情似乎有点不清楚,您的数据库和 table 都具有相同的名称 pet
。
确保确实如此。
将 or die(mysqli_error($conn))
添加到 mysqli_query()
。
旁注:错误报告只能在试运行中进行,绝不能在生产中进行。
脚注:
考虑使用
mysqli
with prepared statements, or PDO with prepared statements,它们更安全。否则,你会开SQL injection.