为什么'SELECT count()'返回'Array'的值?

时间:2015-06-17 19:02:03

标签: php mysql

我正在尝试将分页添加到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>

3 个答案:

答案 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'