Вопрос по database, mysql, sql, php – Отображение данных из MYSQL; Ошибка оператора SQL

-3

У меня есть форма .. Хотите отобразить данные из таблицы MySQL ... Проблема в том, что запрос SQL не отображает данные .. Есть идеи? Я думаю, что ошибка может возникать из-за оператора AND в строке запроса SQL?

<code>  <form method="get" action="submit.php">

   Number of Bedrooms: <select name="bedrooms">
   <option selected value='#'>--Choose Number of Bedrooms--</option>
   <option value="2">2</option>
   <option value="3">3</option>
   <option value="4">4</option>
   <option value="5">5</option>
   </select>


   Number of Occupants:  <select name="sleeps_min">
   <option selected value='#'>--Choose Number of Bedrooms--</option>
   <option value="2">2</option>
   <option value="3">3</option>
   <option value="4">4</option>
   <option value="5">5</option>
   <option value="6">6</option>
   <option value="7">7</option>
   <option value="8">8</option>
   <option value="9">9</option>  
   <option value="10">10</option>
   </select>

   Availability:  <select name="availability">
   <option selected value='#'>--Select Availability Period--</option>
   <option value="All year round">All Year Round</option>
   <option value="New Year Availability Only">New Year</option>

   </select>
   <input type="submit" value="submit" />
    </form>
</code>

--

<code> require 'defaults.php';
 require 'database.php';

 /* get properties from database */

 $property = $_GET['bedrooms'] ;
 $sleeps_min = $_GET['sleeps_min'] ;
 $availability = $_GET['availability'] ;


  $query = "SELECT * FROM `properties` WHERE bedrooms = '{$bedrooms}' sleeps_min = '{$sleeps_min}' AND availability = '{$availability}'";
  $row=mysql_query($query);

  $result = do_query("SELECT * FROM `properties` WHERE bedrooms = '{$bedrooms}' sleeps_min = '{$sleeps_min}' AND availability = '{$availability}'", $db_connection);

 while ($row = mysql_fetch_assoc($result))
 {
$r[] = $row;
 }

 ?>
</code>

Ваш Ответ

1   ответ
2

AND) в вашем предложении where:

$query = "SELECT * FROM `properties` WHERE bedrooms = '{$bedrooms}' sleeps_min =
                                                                   ^----here

и ваш запрос уязвим для атак SQL-инъекций. Как минимум, вы должны передавать переменные $ _GET черезmysql_real_escape_string

Если бы в вашем коде даже была обработка ошибок, вы бы увидели синтаксическую ошибку:

$result = mysql_query($query) or die(mysql_error());
                             ^^^^^^^^^^^^^^^^^^^^^^

NEVER Предположим, что запрос выполнен успешно. Даже если сам синтаксис SQL идеален (ваш не так), существуют и другие причины, по которым запросы не могут НЕ проверять ошибки.

@ Daveif (mysql_num_rows($result) == 0) { // show no records found message }
ура это работает! знаете ли вы способ отображения текста, например "не найдено записей"? если после отправки формы критерии базы данных не соблюдаются. Например, нет жилья с 6 спальнями, которое может вместить 10 человек, поэтому появится сообщение об ошибке? Dave
где бы я вставил это? извините за боль !! Dave

Похожие вопросы