我正在为其中一个表中的列添加值。我的目标是通过表格在页面上显示列数据。但是,当我添加此代码(循环遍历表并显示数据)时,我收到错误:
<?php
while($row = mysqli_fetch_array($result)) {
$customer_name = $row['customerName'];
echo "<tr>
<td>$customer_name</td>
</tr>";
} // end while loop
?>
ERROR
警告:mysqli_fetch_array()期望参数1为mysqli_result, 给出的布尔值 xxx在线 35
我已经对这个错误进行了一些研究,我看到回复说数据库连接可能不正确。但是,我检查了我的数据库,确实正在输入表中的值,因此连接或查询数据库没有问题。
我也注释掉了上面的代码,HTML也很好用。我已将问题与上面的while / array代码隔离开来了。只有在将该段代码添加到脚本中时才会出现错误。
如果您发现有关错误问题的任何见解,并且表格未显示,请告知我们。我已经为类似的脚本使用了相同类型的代码,并且从未设置过参数,并且它工作正常。
如果需要,这是完整的代码:
<?php
require_once("./includes/database_connection.php");
error_reporting(E_ALL);
ini_set('display_errors', 1);
$query = "INSERT INTO customers(customerName) VALUES('IKB')";
$result = mysqli_query($dbc, $query)
or die ('Error querying databse');
?>
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>Home</title>
<link type="text/css" rel="stylesheet" href="classic_cars.css" />
</head>
<body>
<?php
require_once("./includes/navigation.php");
?>
<table>
<tr>
<td>customerName</td>
</tr>
</table>
<?php
while($row = mysqli_fetch_array($result)) {
$customer_name = $row['customerName'];
echo "<tr>
<td>$customer_name</td>
</tr>";
} // end while loop
?>
<?php
mysqli_close($dbc);
require_once("./includes/footer.php");
?>
</body>
</html>
这是数据库连接:
<?php
define('DB_LOCATION', 'x');
define('DB_USERNAME', 'x');
define('DB_PASS', 'x');
define('DB_NAME', 'x');
$dbc = mysqli_connect(DB_LOCATION, DB_USERNAME, DB_PASS, DB_NAME)
or die('Error connecting to database');
?>
答案 0 :(得分:0)
从the manual开始,返回值部分:
失败时返回FALSE。成功的SELECT,SHOW,DESCRIBE或 EXPLAIN查询mysqli_query()将返回一个mysqli_result对象。对于 其他成功的查询mysqli_query()将返回TRUE。
您的查询是INSERT
,因此返回类型将为布尔值TRUE或FALSE。这就是$result
是布尔值而不是mysqli_result对象的原因。
似乎至少在您的示例代码中,您已经知道开头的客户名称以执行INSERT
,那么为什么不保存该值以便稍后重用?否则,如果您确实需要再次从数据库中检索完整记录,无论出于何种原因,您需要在执行SELECT
之前执行新的while($row = mysqli_fetch_array($result))
查询。
答案 1 :(得分:0)
变化
$query = "INSERT INTO customers(customerName) VALUES('IKB')";
$result = mysqli_query($dbc, $query) or die ('Error querying databse');
到
$query = "INSERT INTO customers(customerName) VALUES('IKB')";
mysqli_query($dbc, $query) or die ('Error querying databse');
$query2 = "select customerName from customers";
$result = mysqli_query($dbc, $query2) or die ('Error querying databse');
说明
mysqli_fetch_array
期望第一个参数包含结果集,执行DDL语句(如insert into customers...
)不会在插入后返回新表行,但会返回操作是否成功(true / false),这就是为什么错误说 mysqli_fetch_array()期望参数1为mysqli_result,boolean given insert
查询,然后执行另一个select
查询,该查询在成功insert