Как обрабатывать возвращаемое значение ADOdb Execute

Я нашел несколько учебных пособий с похожим кодом, подобным следующему:

   $sql = "select * from users";

$result =  $conn1->Execute($sql);

if ($result==false) {
print 'error' . $conn1->ErrorMsg() . '<br>';
} else {
print_r($result->GetRows());
}

Но как $ result может быть ложным? Если я добавлю предложение where, которое не может быть выполнено, то все равно будет использоваться ветвь else, поскольку $ result содержит заголовки столбцов. Примеры:

"select * from users"; // Select the whole table data
echo "$result";

приводит к

id,username,password 1,peter,geheim 2,sabine,secret 3,thorsten,qwertz

В то время как

"select * from users where username = 'does not exist'";
echo "$result";

приводит к

id,username,password

Поэтому результат никогда не бывает ложным. В чем моя ошибка здесь?

1

Решение

Метод Execute возвращает false если сам запрос завершается неудачей, а не если он имеет 0 результатов.

Если вы хотите проверить, дал ли запрос какие-либо результаты, вы можете использовать метод RecordCount.

$rows = $conn1->Execute($sql);
if ($rows->RecordCount() > 0) {
// Do something with your rows
} else {
// Nothing returned
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]