Вы не проверяете возврат из mysql_query , который возвращает false при ошибке.
Вы должны проверить возвращаемое значение, а затем проверить ошибку:
if ($result === false) {
//die is ok to use in development,
//use something you can handle the error with in production.
die(mysql_error());
}
Ошибка в вашем запросе заключается в том, что вы используете &&
, а не AND
, что ожидается MySQL.
Примечание: Если у вас нет скрытых уведомлений, вы должны увидеть:
Предупреждение: mysql_fetch_array () ожидает, что параметр 1 будет ресурсом, логическое значение задано
Лучше всего разрабатывать со всеми error_reporting
на E_ALL
, чтобы вы могли видеть любые уведомления / предупреждения, которые могут вызывать у вас ошибки.
Вот ваш запрос в более удобочитаемом формате:
SELECT
registration.hosteladmissionno,
registration.student_name,
registration.semester,
messexp.billmonth,
messexp.billyear,
messexp.wastagecharge,
exp_amount.blockexp // Trying to select from a table not included in the FROM
FROM
registration,
messexp,
blockexp // I'm assuming you want exp_amount from this table.
WHERE
registration.mess_type = '".$q."'
AND status_flag=1 // Changed to be using AND not &&
Вы хотели выбрать blockexp.exp_amount
?
Способ, которым вы используете текущий запрос, заключается в том, что он извлекает значения из таблицы exp_amount в столбце blockexp (который не существует или в любом случае не был включен).
Если вы хотите все поля из blockexp, используйте blockexp.*
Следующая проблема, с которой вы столкнетесь, это то, что вы вообще не указываете, как эти таблицы объединяются. Поэтому я верю, что вы получите все возможные комбинации строк.