Я нашел несколько учебных пособий с похожим кодом, подобным следующему:
$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
Поэтому результат никогда не бывает ложным. В чем моя ошибка здесь?
Метод Execute возвращает false
если сам запрос завершается неудачей, а не если он имеет 0 результатов.
Если вы хотите проверить, дал ли запрос какие-либо результаты, вы можете использовать метод RecordCount.
$rows = $conn1->Execute($sql);
if ($rows->RecordCount() > 0) {
// Do something with your rows
} else {
// Nothing returned
}
Других решений пока нет …