[help] При отсутствии поля в БД, выдает ошибку, как исправить?

Статус
В этой теме нельзя размещать новые ответы.

Welho®

Предвестник пьянки
Регистрация
3 Дек 2007
Сообщения
853
Реакции
325
нужна помощь,
производится выборка из БД, запрос вида:
Код:
$group = db_fetch_row(db_query("select group_id from users where name='".$_SESSION['log']."'"));
$acos = db_fetch_row(db_query("select id from acos where name='prod_roditel'"));
$row = db_fetch_row(db_query("select id from acos_groups where (acos_id='".$acos['id']."') and (group_id='".$group['group_id']."')"));
if(!$row['id']) {
$smarty->assign('noprod_roditel', 1);
}
значение поля может иметь 1 (единицу), или поле может отсутствовать.
Если поле отсутствует, то выдает ошибку:
Код:
Call to a member function on a non-object in o:\site.ru\example.php on line XX

Суть вопроса, что этот запрос построен на аналогичном, который работает в другом месте движка, так вот там при подобном запросе, тоже поле таблицы может иметь значение 1(единица) или поле может вообще отсутствовать, но ошибок не выдает.

Подскажите, почему так происходит и как формировать запрос, что если поле отсутствует (не пустое, а именно отсутствует), то корректно отрабатывался и не возвращал ошибку?
 
Можешь проверять поле на наличие и в зависимости от этого строить запрос:
PHP:
$tableFields = mysql_list_fields("databasename", "tablename");
$columns = mysql_num_fields($fields);
       
for ($i=0; $i<$columns; $i++) {
    $field_array[] = mysql_field_name($fields, $i);
}
       
if (in_array("your_field", $field_array)) {
    //Делаешь полный запрос к БД
} else {
    //Запрос урезаешь - так как поле в БД отсутствует
}
Также можешь попытаться поиграться с EXISTS:Для просмотра ссылки Войди или Зарегистрируйся
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху