0

問題の次のコードは、常に、ected_rows が 0 であることを記録します。DB を確認すると、行は毎回正常に更新されます。なぜ0なのですか?

public static function updateNextRunTime($nextRunTime)
    {
        $mysqli = new mysqli(GDB_HOST, GDB_USERNAME, GDB_PASSWORD, GDB_NAME);

        if ($mysqli->connect_errno)
        {
            throw new Exception('DB Connection Failed. Error Code: ' . $mysqli->connect_errno);
        }

        $cmd = $mysqli->prepare("UPDATE balanceagent SET NextRunTime = ? WHERE Id = 1");
        if (!$cmd)
        {
            throw new Exception($mysqli->error);
        }

        $cmd->bind_param('s', $nextRunTime);
        $cmd->execute();

        $rows = $mysqli->affected_rows;

        $cmd->close();
        $mysqli->close();

        if ($rows != 1)
        {
            logToFile("Balance Agent Error - Failed to update the next run time! - Affected rows: " . $rows);
        }
    }
4

2 に答える 2

1

$cmd->affected_rows; 代わりに チェックする必要 があります$mysqli->affected_rows;

于 2013-08-02T00:44:17.277 に答える
1

準備済みステートメントの場合、mysqli_stmt::affected_rowsフォームを使用する必要があります。

$cmd->bind_param('s', $nextRunTime);
$cmd->execute();

$rows = $cmd->affected_rows;
于 2013-08-02T00:47:41.723 に答える