我怎样才能做到这一点(基本的mysqli和PHP)


How can I make this work (Basic mysqli and PHP)?

下面是我的代码:

      $result = $mysqli->query('SELECT * FROM products');
      if($result === FALSE){
        die(mysql_error());
      }
      if($result){
        while($obj = $result->fetch_object()) {
            if ($obj->typeOf === 'single')
            {   
                $forPack = $mysqli->query('SELECT id FROM products WHERE typeOf = 12-pack AND product_name = '.$obj->product_name);
                $forPound = $mysqli->query('SELECT id FROM products WHERE typeOf = 50-pound AND product_name = '.$obj->product_name);
                echo '<div class="large-3 columns">';
                echo '<p><h3>'.$obj->product_name.'</h3></p>';
                echo '<img src="images/products/'.$obj->product_img_name.'"/>';
                echo '<p><strong>Price (Per Unit)</strong>: '.$currency.$obj->price.'</p>';
                echo '<p><a href="update-cart.php?action=add&id='.$obj->id.'"><input type="submit" value="Add Single" style="clear:both; background: #0078A0; border: none; color: #fff; font-size: 1em; padding: 10px;" /></a></p>';
                echo '<p><a href="update-cart.php?action=add&id='.$forPack.'"><input type="submit" value="Add 12-pack" style="clear:both; background: #0078A0; border: none; color: #fff; font-size: 1em; padding: 10px;" /></a></p>';
                echo '<p><a href="update-cart.php?action=add&id='.$forPound.'"><input type="submit" value="Add 50 pound" style="clear:both; background: #0078A0; border: none; color: #fff; font-size: 1em; padding: 10px;" /></a></p>';
                echo '</div>';
            }
        }

我遇到麻烦的区域是$forPack和$forPound。在我的产品表中,一般有三种产品。该产品,12包产品,50磅产品。三个update-cart.php调用中的第一个调用一切正常。上面写着$obj->id,但我似乎无法使用$forPack或$forPound。它们有完全相同的产品名称,只是服务器上的"typeOf"不同。当我查询选择ID时,它不只是返回一个数字吗?这里到底还了什么?

我只需要程序在产品表中查找具有相同确切名称但不同类型的产品。如果有更好的方法,请告诉我。我是SQL和PHP的初学者,所以我确信这是一个愚蠢的错误。

这里有两件不同的事情:

  1. 打字(不包括需要的引号)
  2. 您的结果集当前是一个数组,而不是单个值。试试这个:

    $forPack = $mysqli->query("SELECT id FROM products WHERE typeOf = '12-pack' AND product_name = '" . $obj->product_name . "'")->fetch_row()[0];

    $forPound = $mysqli->query("SELECT id FROM products WHERE typeOf = '50-pound' AND product_name = '" . $obj->product_name . "'")->fetch_row()[0];

不确定网站拒绝使用代码块的原因。无论如何,请注意,您的SQL现在对整个语句使用双引号,因此您可以在其中使用单引号。此外,单引号围绕着typeOf值和$obj->product_name。在构建SQL字符串时,最好先回显它们,这样您就可以看到它们是正确构建的。要做到这一点,我会做一些类似的事情:

$sql = "SELECT id FROM products WHERE typeOf = '12-pack' AND product_name = '" . $obj->product_name . "'";
echo $sql;
$forPack = $mysqli->query($sql)->fetch_row()[0];