У меня есть форма. Нужно отображать данные из таблицы mysql. Проблема заключается в том, что запрос SQL-запроса не отображает данные … какие-либо идеи? Я думаю, что ошибка может быть вызвана из-за оператора AND в строке запроса SQL?
<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>
–
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; } ?>
В вашем предложении where отсутствует логический оператор (например, AND
):
$query = "SELECT * FROM `properties` WHERE bedrooms = '{$bedrooms}' sleeps_min = ^----here
и ваш запрос уязвим для атак SQL-инъекций. На минимальном уровне вы должны передавать переменные $ _GET через mysql_real_escape_string
Если бы у вас была даже ошибка обработки ошибок в коде, вы бы увидели ошибку синтаксиса:
$result = mysql_query($query) or die(mysql_error()); ^^^^^^^^^^^^^^^^^^^^^^
НИКОГДА не выполняйте запрос. Даже если сам синтаксис SQL является совершенным (у вас нет), есть слишком много других причин, по которым запросы не могут НЕ проверяться на отказ.