#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
, т.е. Первый столбец в запросе — это заголовок, а второй — количество и так далее. Это должно помочь вам начать.