我有一个从数据库中获取SKU并创建页面的页面。示例网址:http://example.com/index.php?sku=1234567
当我加载这样的URL时,它什么也没有显示 - 甚至不是我用echo
输出的表格。以下是我的代码:
$sku = $_GET['sku'];
$result = mysqli_query($conn, "SELECT productname, price, producturl, productimg, productdesc, sku FROM table WHERE sku=" . $sku);
while ($row = mysqli_fetch_array($result)) {
echo '<h3>test</h3>';
echo '<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><h4>'.$row["sku"].'</h4></td>
<td><h3>'.$row["productname"].'</h3></td>
<td rowspan="2"><img src="'.$row["productimg"].'" width="100%" alt="productimg"/></td>
</tr>
<tr>
<td colspan="2" rowspan="2"><p>'.$row["productdesc"].'</p></td>
</tr>
<tr>
<td><a class="button" href="'.$row["producturl"].'">View Product</a> <a class="alert button" href="">No Match</a> <a class="alert button" href="">Match</a></td>
</tr>
</table>';
}
我已连接到我的数据库,并且其中包含<?php
和?>
标记。我在玩它时注意到,如果我删除这一行:
while ($row = mysqli_fetch_array($result)) {
并删除结束}
,它可以工作但不显示任何数据 - 只是表格。我不确定这里发生了什么。
答案 0 :(得分:2)
简单。您的mysqli_query
来电不会返回任何记录。没有找到记录,或者有错误。让你的代码更健壮。
$sku = $_GET['sku'];
if ($result = mysqli_query($conn, ...)) {
if (mysqli_num_rows($result) == 0) {
echo "no skus found";
} else {
while ($row = mysqli_fetch_array($result)) {
echo '<h3>test</h3>';
...
}
}
} else {
echo "something went wrong: ".mysqli_error();
}
(作为旁注,请使用参数化查询,你现在正在开放SQL注入.MySQLi对此没有任何魔力,你还需要验证/清理输入。)
答案 1 :(得分:0)
显示故障时的mysqli错误:
if (!mysqli_query($link, $sql)) {
printf("Errormessage: %s\n", mysqli_error($link));
}
答案 2 :(得分:0)
将$ sku放在引号内。
<?php
$sku = $_GET['sku'];
$result = mysqli_query($conn, "SELECT productname, price, producturl, productimg, productdesc, sku FROM table WHERE sku = $sku");
while ($row = mysqli_fetch_array($result)) {
echo '<h3>test</h3>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><h4>'.$row["sku"].'</h4></td>
<td><h3>'.$row["productname"].'</h3></td>
<td rowspan="2"><img src="'.$row["productimg"].'" width="100%" alt="productimg"/></td>
</tr>
<tr>
<td colspan="2" rowspan="2"><p>'.$row["productdesc"].'</p></td>
</tr>
<tr>
<td><a class="button" href="'.$row["producturl"].'">View Product</a> <a class="alert button" href="">No Match</a> <a class="alert button" href="">Match</a></td>
</tr>
</table>';
}
?>
答案 3 :(得分:0)
我已经设法解决了我不得不从mysqli中删除i的问题,但我在另一个站点上使用了相同的代码片段,因此它可能与服务器或数据库有关。这是代码虽然'
<?php
$sku = $_GET['sku'];
$objConnect = mysql_connect("host address","username","password") or die(mysql_error() . 'this is true death...');
$objDB = mysql_select_db("database");
$result = 'SELECT sku, productname, price, producturl, productimg, productdesc FROM table1 WHERE sku="' . $sku . '"';
$result = mysql_query($result);
while ($row = mysql_fetch_array($result)) {
echo '<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><h4>'.$row["sku"].'</h4></td>
<td><h3>'.$row["productname"].'</h3></td>
<td rowspan="2" width="30%"><img src="'.$row["productimg"].'" width="100%" alt="productimg"/></td>
</tr>
<tr>
<td colspan="2" rowspan="2"><p>'.$row["productdesc"].'</p></td>
</tr>
<tr>
<td><a class="button" href="'.$row["producturl"].'">View Product</a> <a class="alert button" href="">No Match</a> <a class="alert button" href="">Match</a></td>
</tr>
</table>';
}
?>