База данных PHP и SQL

#php #mysql

#php #mysql

Вопрос:

У меня есть база данных SQL с таблицей для хранения инвентаря видеоигр. Следующий PHP-код обращается к этой базе данных и конкретной таблице, и я хотел бы распечатать только те видеоигры, у которых есть 10 или в наличии. Количество для видеоигр хранится в моей таблице «инвентарь» как «количество» Спасибо заранее.

 <?php

// Construct query
$query = "SELECT * FROM inventory";

// Perform the query, gather results
$results = mysql_query( $query )
    or die ( "Sorry, could not get the data ". mysql_error() );

echo "<div style=margin-bottom:10px;>Number of games found with quantity > 10 is ". "</div>n";

// Create loop to print all found records
// That are contained inside of the $results variable
for( $i = 0; $i < mysql_num_rows($results); $i   ) {

    if ( $gamearray['quantity'] > 10) {

        $gamearray = mysql_fetch_array( $results );
        echo "<div>Title of game is ". $gamearray['title'] ."</div>n";
        echo "<div>Quantity in stock is ". $gamearray['quantity'] ."</div>n";
        echo "<div style=margin-bottom:10px;>With a critic score of ". $gamearray['metascore'] ." This game is</div>n";
    }

}

?>
  

Комментарии:

1. Похоже, вам нужно прочитать WHERE предложения в SQL.

2. ПРЕДУПРЕЖДЕНИЕ : Если вы только изучаете PHP, пожалуйста, не изучайте устаревший mysql_query интерфейс. Это ужасно и было удалено в PHP 7. Такую замену, как PDO, нетрудно освоить , а такое руководство, как PHP The Right Way , помогает объяснить лучшие практики. Убедитесь , что ваши пользовательские параметры правильно экранированы , иначе вы столкнетесь с серьезными ошибками при внедрении SQL .

Ответ №1:

Я не любитель PHP, но надеюсь, что это поможет сузить вашу проблему.

Разве вам не нужно $gamearray сначала извлекать содержимое, чтобы проверить значение количества? Кажется, вы делаете это после, в if контейнере.

Как вы перебираете результаты? Например, как mysql_fetch_array узнать, что он должен получать данные для строки 1, строки 2, строки n-1.. Разве у вас не должно быть чего-то подобного mysql_fetch_array($results[i]) ?

Обязательно используйте length — 1 здесь for( $i = 0; $i < mysql_num_rows($results) - 1; $i ) , чтобы избежать выхода индекса за пределы. Если он основан на 0…

Ответ №2:

 $query = "SELECT * FROM inventory WHERE quantity > 10";
  

Это должно принести все записи, где количество больше 10. Кроме того, вам не нужен if оператор сейчас.
Вы можете структурировать и перебирать результаты следующим образом :

 if(mysql_num_rows($result) > 0) {
   while ($row = mysql_fetch_array($result)) {
   echo("Title:" . $row[0] . "Quantity :" . row[1]);  
   }
}
  

Где числа 0, 1 будут относиться к порядку столбцов inventory , т.е. Первый столбец в запросе — это заголовок, а второй — количество и так далее. Это должно помочь вам начать.