Я использую Medoo Framework для обработки запросов к базе данных. По сути, это оболочка PDO, я не нашел в их документации, как обрабатывать ошибки или проверять результат, иногда он возвращает пустой массив, иногда FALSE, иногда 0 и т. Д.
Поскольку я не мог понять, как обрабатывать ошибки, это то, что я делаю в настоящее время, используя empty (), потому что он может обрабатывать FALSE, 0 и пустой массив, я думаю, что здесь все в порядке):
На ВЫБРАТЬ (Medoo возвращает массив)
// Same as:
// SELECT username FROM accounts WHERE id=$id AND suspended=0
$select = $database->select("accounts",["username"], [
"AND" => [
"id" => $id,
"suspended" => 0
]
]);
// I have to check if Query failed also if row was not found
if (empty($select) === FALSE && count($select) > 0)
{
// It didn't FAIL
// So i get username like this:
$key = array_keys($select)[0];
$username = $select[$key]['username'];
}
else
{
// It FAILED
}
НА ВСТАВКЕ (Medoo говорит, что возвращает INSERT ID здесь)
$insert = $database->insert("accounts", [
"username" => "$username"]);
// Check if query didn't fail and actually inserted (affected rows i think?)
if (empty($insert) === TRUE OR $insert < 1)
{
// It Failed
}
ОБНОВЛЕНИЕ (На самом деле это единственный чистый запрос, он возвращает затронутые строки)
$update = $database->update("accounts", ["brute_force[+]" => 1], ["id" => $user_id]);
if (empty($update) === TRUE OR $update < 1)
{
// It FAILED
}
// Check if query didn't fail and also affected row
Я настолько смущен и не уверен в этом, что я параноик, может быть, мне следует просто полностью переписать и использовать CodeIgniter, как я всегда делаю.
Чтобы проверить, если SELECT/UPDATE
Заявление успешно я использую:
if(!$select){
// SELECT failed
}
потому что MEDOO вернется FALSE
или же 0
или же empty Array
если SELECT/UPDATE
не удалось или данные не были получены / обновлены, и все эти вещи равны FALSE
в if
заявление. За INSERT
вы можете использовать то же самое, если ваша таблица в базе данных имеет ID
поле в качестве первичного ключа; если у вас нет первичного ключа, то вы можете использовать error()
метод и анализ ответа для проверки на наличие ошибок, потому что MEDOO
вернусь 0
хотя заявление было выполнено.
Других решений пока нет …