У меня есть 2 таблицы базы данных (для системы бронирования) со следующими структурами:MySql многократный запрос - возвращает ошибку mysql_fetch_array
Quartos:
id_quarto
.tipo_quarto
.vista_quarto
.
Reservas:
id_reserva
.n_cliente
.id_quarto
.check_in
.check_out
.
Я хочу, чтобы запрос, чтобы вернуть Quartos (номера) доступно (с полями id_quarto/tipo_quarto/vista_quarto от него), которые Арент уже забронированы Reservas (оговорки), так что я пишу следующий запрос (также сбор информации из предыдущей формы):
ПРИМЕЧАНИЕ: В настоящее время я не рассматриваю параметр check_in и check_out дат ... это всего лишь тест, и поэтому я добавлю условия для его проверки, но если у кого-то есть идеи для этих условий я был бы признателен. : D
// Connect to database server
mysql_connect("localhost", "root") or die (mysql_error());
// Select database
mysql_select_db("teste") or die(mysql_error());
// Get data from the database
$strSQL = "SELECT id_quarto,tipo_quarto,vista_quarto ".
" FROM quartos,reservas ".
" WHERE quartos.id_quarto!=reservas.id_quarto ".
" AND quartos.tipo_quarto='". $_POST['tipo_quarto'] ."' ".
" AND quartos.vista_quarto='". $_POST['vista_quarto'] ."'";
// Loop the recordset $rs
// Each row will be made into an array ($row) using mysql_fetch_array
while($row = mysql_fetch_array($rs)) {
?>
<table border="1">
<tr align="left">
<td width="75"><?php echo $row['id_quarto']; ?></td>
<td width="75"><?php echo $row['vista_quarto']; ?></td>
<td width="75"><?php echo $row['tipo_quarto']; ?></td></tr>
</table>
<?php
}
// Close the database connection
// mysql_close(); ?>
Но когда я делаю это возвращает ошибку на линию X, которая является линией, когда я мертвые записи о том, что «mysql_fetch_array() ожидает параметр 1, чтобы быть ресурсом, логический».
Почему это и что я могу сделать, чтобы предотвратить его? как я могу написать правильный код?
Кроме того, я хотел, чтобы результаты были представлены в виде элемента формы (списка/меню), чтобы пользователь мог выбирать только действительные результаты. Любая идея, как включить результаты из набора записей с этой функцией?
Благодарим вас за редактирование MGA. Теперь читать легче. :) – SerafimSaudade
Добро пожаловать в переполнение стека! Код, который вы показываете, уязвим для [SQL-инъекции] (http://php.net/manual/en/security.database.sql-injection.php). Используйте подходящий метод санитарии вашей библиотеки (например, 'mysql_real_escape_string()' в вашем случае) или переключитесь на PDO и подготовленные операторы. –
@ v01pe both ('! =', '<>') Хороши и то же: [<>,! = В руководстве по MySQL] (http://dev.mysql.com/doc/refman/5.0/en/ Сравнение-operators.html # operator_not-равно). –