2012-01-11 4 views
-1

Можно создать дубликат:
mySQL query multiple - returns error mysql_fetch_arrayMYSQL запрос - по-прежнему возвращает ошибку mysql_fetch_array

У меня есть 2 таблицы базы данных (для системы бронирования) со следующими структурами:

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='". mysql_real_escape_string($_POST['tipo_quarto']) ."' ". 
       " AND quartos.vista_quarto='". mysql_real_escape_string($_POST['vista_quarto']) ."'"; 
$rs = mysql_query($strSQL); 


    // 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, чтобы быть ресурсом, логический».

Почему это и что я могу сделать, чтобы предотвратить его? как я могу написать правильный код?

Кроме того, я хотел, чтобы результаты были представлены в виде элемента формы (списка/меню), чтобы пользователь мог выбирать только действительные результаты. Любая идея, как включить результаты из набора записей с этой функцией?

+1

Вы все еще не используете 'mysql_query()', не так ли? –

+0

Является ли '' SELECT id_quarto'' в вашем запросе предполагаемым ссылкой на 'quartos.id_quarto' или' reservas.id_quarto'? И этот запрос работает даже без указания этого ?! Где вы выполняете запрос? –

+0

Дублирование http://stackoverflow.com/questions/8817940/mysql-query-multiple-returns-error-mysql-fetch-array. –

ответ

1

Вы пропустили

$rs=mysql_query($strSQL) 

Ofcourse непосредственно перед

// Loop the recordset $rs 
+0

$ rs = mysql_query ($ strSQL); Включено. Прости. все еще не работает. – SerafimSaudade

+0

Следующий шаг: сделать «echo $ strSQL;» перед «$ rs = mysql_query ($ strSQL);», скопируйте клиент командной строки SQL в MySQL и опубликуйте результат. –

0

Строго вы должны сказать:

if ($rs=mysql_query($strSQL)) { 

// Proceed with while loop 

} else echo mysql_error(); 

Запрос может повысить ошибку ???

Смежные вопросы