Как вернуть неудачный запрос MySQL в PHP - PullRequest
0 голосов
/ 04 октября 2018

У меня есть два запроса ниже.В зависимости от переменной $ methodtype запрашивается только один.

if ($methodtype == 'group'){

    $stmt = $connection->prepare("SELECT group_id FROM usergroup_list WHERE usergroup = ?");
    $stmt->bind_param('s', $usergroup);
    $stmt->execute();
    $result = $stmt->get_result();
    while ($row = $result->fetch_assoc()) {
        foreach ($row as $value) {
            $newgroupid = $value;
        }
    }
    $result->free_result();

    $stmt = $connection->prepare("UPDATE `usergroup_privs` SET `status` = ? WHERE group_id = ? and function = ?");
    $stmt->bind_param('iss', $privbvalue, $newgroupid, $privname);

} elseif ($methodtype == 'user') {

    $stmt = $connection->prepare("SELECT user_id FROM user_list WHERE username = ?");
    $stmt->bind_param('s', $usergroup);
    $stmt->execute();
    $result = $stmt->get_result();
    while ($row = $result->fetch_assoc()) {
        foreach ($row as $value) {
            $newgroupid = $value;
        }
    }
    $result->free_result(); 

    $stmt = $connection->prepare("UPDATE `user_list` SET `44` = ? WHERE user_id = ?");
    $stmt->bind_param('ii', $privbvalue, $newgroupid);

}

Затем я запускаю второй блок кода, чтобы либо вывести измененные значения, либо сообщение с инструкцией о сбое запроса (предполагающее наличие ошибки внутриSQL).

if ($stmt->execute()) {
    echo json_encode([true, 'Changed ' . $privname . ' to ' . 
strtoupper($privvalue)]);
} else {
    echo json_encode([false, 'Delete Unsuccessful - SQL Error']);
}

$stmt->close();

Однако вторая часть, похоже, не работает.Если в SQL есть ошибка, страница генерирует ошибку 500.Возможно, я неправильно выполнил пару руководств, но из того, что я видел, это должно сработать?

Любая помощь, чтобы прояснить это, была бы очень признательна!

1 Ответ

0 голосов
/ 04 октября 2018

Если вы используете PDO (пример выше выглядит как один), попробуйте установить режим PDO в Exception, используя этот код при создании соединения $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);, а затем используйте блок try & catch для перехвата исключения.

Ссылка: Как просмотреть ошибку запроса в PDO PHP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...