我在显示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
屏幕截图2:从数据库中删除了图像,并使用了文件路径
屏幕截图3:print_r($ row)
答案 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)