PHP动态页面不工作

PHP动态页面不工作,php,mysql,Php,Mysql,我有一个从数据库中获取SKU并创建页面的页面。示例URL: 当我加载这样一个URL时,它什么也不显示——甚至连我用echo输出的表也不显示。下面是我的代码: $sku = $_GET['sku']; $result = mysqli_query($conn, "SELECT productname, price, producturl, productimg, productdesc, sku FROM table WHERE sku=" . $sku); while ($row = mysql

我有一个从数据库中获取SKU并创建页面的页面。示例URL:

当我加载这样一个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>';
}

并删除关闭的
}
,它工作但不显示任何数据-仅显示表。我不确定这里发生了什么。

很简单。您的
mysqli\u查询
调用不会返回任何记录。未找到任何记录,或者存在错误。使您的代码更加健壮

$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();
}
$sku=$\u GET['sku'];
如果($result=mysqli_查询($conn,…){
if(mysqli_num_rows($result)==0){
回显“未找到SKU”;
}否则{
while($row=mysqli\u fetch\u数组($result)){
回声“测试”;
...
}
}
}否则{
echo“出了问题:”.mysqli_error();
}

(作为旁注,请使用参数化查询,您现在正在打开SQL注入的大门。MySQLi不是解决这一问题的灵丹妙药,您仍然需要验证/清理输入。)

显示错误时的MySQLi错误:

if (!mysqli_query($link, $sql)) {
    printf("Errormessage: %s\n", mysqli_error($link));
}

将$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>';
    }
    ?>

我已经设法解决了我不得不从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>';
}
?>


您可以尝试以下操作:$result=mysqli\u query($conn,“从sku='$sku'的表中选择产品名称、价格、产品URL、产品img、产品描述、sku”);您的代码易受SQL注入攻击,请阅读以下内容:@RyanThomasKing不要养成编写蹩脚代码的习惯。使用参数化查询与您现在所做的一样简单/快速。更不用说,如果不至少进行转义,您将失去功能-请尝试搜索带有撇号的内容。@RyanThomasKing仍然可以。它仍然可以经常这样做是一个很好的练习。在现实世界中,你会发展肌肉记忆,减少犯错误的几率“@pattyd打字错误也让我多次想起你混合了面向对象风格和过程风格style@steven感谢您的关注;修正了。找不到任何东西。我将回顾我的教程,因为这是在另一个页面上工作,所以只需再次检查这是一个好主意,但它并不能解决问题。它只会提供更多关于这个问题的信息。
<?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>';
}
?>