显示SQL查询结果

时间:2010-09-20 07:13:11

标签: php sql

我在显示SQL查询的结果时遇到问题。我试图从产品表中显示所有图像和价格。

我能够在浏览器中显示echo语句“Query works”。但是,结果不会显示在浏览器中。

        if ($count > 0) {
            echo "Query works";
        } else {
            echo "Query doesn't work" ."<br/>";
        }

PHP代码:

$con = getConnection();
        $sqlQuery = "SELECT * from Products";

        // Execute Query -----------------------------           
        $result = mysqli_query($con, $sqlQuery);
            if(!$result) {
                echo "Cannot do query" . "<br/>";
                exit;
            }

            $row = mysqli_fetch_row($result);
            $count = $row[0];

            if ($count > 0) {
                echo "Query works";
            } else {
                echo "Query doesn't work" ."<br/>";
            }

          // Display Results -----------------------------

            $num_results = $result->numRows();

            for ($i=0; $i<$num_results; $i++) {
                $row = $result->fetchRow(MDB2_FETCH_ASSOC);
                echo '<img src="'.$row['Image'].'>';
                echo "<br/>" . "Price: " . stripslashes($row['Price']);

}

屏幕截图1
alt text 屏幕截图2:从数据库中删除了图像,并使用了文件路径

alt text 屏幕截图3:print_r($ row)

alt text

7 个答案:

答案 0 :(得分:2)

我认为

$row = mysqli_fetch_row($result);
$count = $row[0];

应该是

$count = $result->numRows();
if ($count > 0) {
  echo "Query produced $count rows";
} else {
  echo "Query produced no rows" ."<br/>";
  return;
}

您的for循环应使用fetch_assoc作为:

while ($row = $result->fetch_assoc()) {
  echo '<img src="'.$row['Image'].'>';
  echo "<br/>" . "Price: " . stripslashes($row['Price']);
}

答案 1 :(得分:2)

尝试

$sqlQuery = "SELECT * from Products";

        // Execute Query -----------------------------           
        $result = mysqli_query($con, $sqlQuery);
            if(!$result) {
                echo "Cannot do query" . "<br/>";
                exit;
            }

            $row = mysqli_fetch_row($result);
            $count = $row[0];

            if ($count > 0) {
                echo "Query works";
            } else {
                echo "Query doesn't work" ."<br/>";
            }

          // Display Results -----------------------------

            $num_results =mysqli_num_rows($result);

            for ($i=0; $i<$num_results; $i++) {
                $row = mysqli_fetch_assoc ($result);
                //print_r($row);
              echo '<img src="'.$row['Image'].'>';
                echo "<br/>" . "Price: " . stripslashes($row['Price']);
            }

答案 2 :(得分:1)

$ row是查询中的第一个结果行(如果有)。 $ row [0]是此查询中的第一列(因为您使用select *,它取决于数据库中列的顺序)。那么,$ row [0]&gt; 0取决于数据库的内容。

答案 3 :(得分:1)

它正在显示字符,因为这是您存储图像的方式。为了显示图像,您必须使用以下内容绘制图像:

echo '<img src="data:image/gif;base64,'.base64_encode($row['Image']).'" />';

答案 4 :(得分:0)

Mysqli没有fetchRow(),这是Pear :: MDB2库的一部分

请参阅文档:http://www.php.net/manual/en/mysqli-result.fetch-assoc.php

将循环更改为以下内容:

while ($row = $result->fetch_assoc()) {
    echo '<img src="'.$row['Image'].'>';
    echo "<br/>" . "Price: " . stripslashes($row['Price']);
}

此外,通过这样做:

$row = mysqli_fetch_row($result);
$count = $row[0];
在循环之前,你基本上是跳过第一行而不是在循环中显示它的图像。

答案 5 :(得分:0)

打印查询中的所有结果,您可以使用while循环

while($row=mysqli_fetch_assoc($result)){
    echo 'Price '.$row['Price'].'<br/>';
}

答案 6 :(得分:0)

而不是

If ($count > 1)

尝试

If ($count >= 1)