我正在尝试将分页添加到MySQL结果页面。我目前的目标是将列中的结果数($items_number
)除以10,因为我想要每页10个结果($per_page = 10
)。
我不得不将$items
转换为数组,因为它无法读取为字符串,所以现在我有$items_number = mysqli_fetch_row($items)
;
当我在代码中回显这个以查看列中的项目数时,我收到一条消息:
Notice: Array to string conversion in /home/ikb2014/public_html/test/classic_cars/pag_test.php on line 46
但它也会返回一个表示'Array'的值。如何获取值以报告列中的项目数而不是单词“Array”?
代码:
<?php
require_once("./includes/database_connection.php");
error_reporting(E_ALL);
ini_set('display_errors', 1);
$per_page = 10;
$query = "SELECT productCode, productName, productLine, productScale, productVendor, productDescription, buyPrice FROM products WHERE `productLine` = 'Classic Cars'";
$result = mysqli_query($dbc, $query)
or die(mysqli_error($dbc));
$query_count = "SELECT count(productLine) FROM products WHERE `productLine` = 'Classic Cars'";
$items = mysqli_query($dbc, $query_count)
or die(mysqli_error($dbc));
$items_number = mysqli_fetch_row($items);
?>
<!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");
?>
<?php
while ($row = mysqli_fetch_array($result)) {
$product_code = $row['productCode'];
$product_name = $row['productName'];
$product_line = $row['productLine'];
$product_vendor = $row['productVendor'];
$product_description = $row['productDescription'];
$buy_price = $row['buyPrice'];
echo "<tr>
<td><p>$product_name</p></td>
<td><p>$items_number</p></td>
</tr>";
} // end while ($row = mysqli_fetch_array($result))
?>
<?php
require_once("./includes/footer.php");
?>
</body>
</html>
答案 0 :(得分:1)
来自php文档:
mysqli_result :: fetch_row - mysqli_fetch_row - 获取结果行 枚举数组
从结果集中获取一行数据并将其作为一个返回 枚举数组,其中每列存储在数组偏移中 从0开始(零)
我将为您的问题发布2个解决方案: 首先是使用
mysqli_fetch_row
使用COUNT函数(如代码中所示):
$row = mysqli_fetch_row($items);
$items_number = $row[0];
其次是删除COUNT FUNCTION并使用
像这样mysqli_num_rows
$query_count = "SELECT productLine FROM products WHERE `productLine` = 'Classic Cars'";
$items = mysqli_query($dbc, $query_count)
or die(mysqli_error($dbc));
$items_number = mysqli_num_rows($items);
答案 1 :(得分:0)
我会做
SELECT count(productLine) as productcount FROM products WHERE `productLine` = 'Classic Cars'
因此密钥将在您的数组中为productcount
。然后
echo "<tr>
<td><p>$product_name</p></td>
<td><p>" . $items_number['productcount'] . "</p></td>
</tr>";
显示它。这个数字总是一样的,是你想要的吗?
哦,也可以使用mysqli_fetch_assoc
。所以$items_number = mysqli_fetch_assoc($items);
我认为你当前的实现
echo "<tr>
<td><p>$product_name</p></td>
<td><p>" . $items_number[0] . "</p></td>
</tr>";
会奏效。我更喜欢使用指定的名称,但是新的列被添加到查询中或被删除。您的0
始终是第一列。
链接:
http://php.net/manual/en/mysqli-result.fetch-row.php
http://php.net/manual/en/mysqli-result.fetch-assoc.php
答案 2 :(得分:0)
尝试更改此行
SELECT count(productLine) FROM products WHERE `productLine` = 'Classic Cars'
到
SELECT count(*) FROM products WHERE `productLine` = 'Classic Cars'