Я получаю сообщение об ошибке:
ОШИБКА: SQLSTATE [HY000]: Общая ошибка: 2053
Я понятия не имею, почему это происходит, потому что код работает нормально, и база данных обновляется, но она по-прежнему возвращает эту ошибку.
Вот мой код:
<?php header("Content-Type: application/json; charset=UTF-8"); require 'UHCauth.php'; try { $conn = new PDO("mysql:host=$mysql_serv;dbname=$mysql_db", $mysql_user, $mysql_pass); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); if(isset($_GET['d6518e47'])) { $USERNAME = $_GET['d6518e47']; $stmt = $conn->prepare( "UPDATE $mysql_table SET KILLS = KILLS+1 WHERE USERNAME = :USERNAME" ); $stmt->execute(array('USERNAME' => $USERNAME)); $row = $stmt->fetch(PDO::FETCH_ASSOC); echo json_encode($row); } else { $stmt = $conn->prepare( "SELECT * FROM $mysql_table ORDER BY McVersion DESC, ModVersion DESC LIMIT 1" ); $stmt->execute(); $row = $stmt->fetch(PDO::FETCH_ASSOC); echo json_encode($row); } } catch(PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } ?>
$row = $stmt->fetch(PDO::FETCH_ASSOC);
это строка, которая вызовет вашу ошибку.
Зачем?
Потому что ничего не получается – в массиве – после обновления
Помните, что
PDO :: FETCH_ASSOC: возвращает массив, индексированный по имени столбца, возвращенный в ваш результирующий набор
Итак, никакого результата нет … нет вечеринки
Если вы хотите узнать статус выхода своей команды, просто используйте возвращаемое значение функции execute()
$rv = $stmt->execute(array('USERNAME' => $USERNAME));