2

プレーンなmysql_*からPDOに移行しています(ええ、カレンダーでは2012年です)。
Webサイトで$f= $ db-> FetchAll( "SELECT * FROM ...")のようなことを行う機会を持つために、単純なラッパークラスを作成しています。これが私がしていることです:

    public function Query($q, $errmessage="", $params=array()) {
    try {
    $stmt=$this->connect->prepare($q);
    if (is_array($params) && count($params)>0) {
    $stmt->execute($params);
    } else {
    $stmt->execute();
    }
    return $stmt;
    } catch(PDOException $e) {
    die($errmessage.": ".$e->GetMessage());
    }
    }

   public function Fetch($q, $arraylist=0) {
    if (!is_object($q)) { // Assuming it's a raw query
    $stmt=$this->Query($q, "Unable to process the query for fetching");
    } else $result=$q;
    $f=$stmt->Fetch();
    return $f;
}

そして、これは「一般エラー2014」例外をスローします。
助けていただければ幸いです。
ありがとう!

4

1 に答える 1

2

20141年ではなく、エラーコードです。次回はエラーをグーグルで検索してみてください。

$ pdo-> query( "INSERT INTO test(some)VALUES( '1111111111111111')、( '1111111111111');-私はSQLコメントであり、削除するとこの問題は解決します");

による ";" これはマルチステートメントであり、2つのクエリを実行し、2番目はコメントのみです。2番目の「結果」には、PDOStatement->nextRowsetを使用してアクセスできます。[ソース]

また:

新しいサーバーでこのエラーが発生した理由を追跡するために何時間も費やした後、同じコードが他のサーバーで正常に実行された後、問題はWebサーバーで実行されている古いMySQLクライアントライブラリと最新バージョンであることがわかりましたデータベースサーバーのボックスで実行されているMySQLサーバー。[ソース]

于 2012-11-15T21:57:29.647 に答える