2016-05-17 2 views
-1

Ниже мой код:Как я могу сделать эту работу (Basic mysqli и 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, поэтому я уверен, что это глупая ошибка.

+0

Вы получаете набор записей из базы данных при вызове 'query'; вам нужно пройти через это, чтобы получить ценность, которую вы ищете. – andrewsi

+0

Пара других вещей - вы можете получить оба значения в одном запросе; вы можете сделать 'SELECT if, typeOf FROM products WHERE typeOf IN ('12 -pack ', '50 -pound')', хотя тогда ваш набор записей будет содержать две строки, и вам нужно будет обработать его соответствующим образом. Также обратите внимание, что если вы ищете текстовое значение ('12-pack'), вам нужно обернуть его в кавычки, иначе MySQL будет считать его именем столбца. – andrewsi

+0

Набор записей, например массив или что? Как я буду повторять этот набор записей? Я пробовал это около часа, и я не знаю, что, черт возьми, я делаю. Почему у меня есть что-нибудь, чтобы перебирать, если я выбираю уникальный идентификатор? Я не понимаю. –

ответ

1

Есть 2 различных вещи происходят здесь:

  1. Опечатка (не включая кавычки, где необходимо)
  2. Вашего ResultSet в настоящее время является массив, а не одно значения. Попробуйте это:

    $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]; 
Смежные вопросы