MySql一般错误:2053

时间:2014-03-15 12:19:21

标签: php mysql database

我收到了错误:

  

错误: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();
}
?>

1 个答案:

答案 0 :(得分:18)

$row = $stmt->fetch(PDO::FETCH_ASSOC);是会导致错误的行。

为什么?

因为在更新后没有任何内容可以获取 - 在数组中

请记住

  

PDO :: FETCH_ASSOC:返回由返回的列名索引的数组   在结果集中

所以,没有结果集......没有派对

如果您想知道命令的退出状态,只需使用execute()函数的返回值

$rv = $stmt->execute(array('USERNAME' => $USERNAME));