2

ローカルファイルをオンラインで移行していて、dbスクリプトでPHPの問題が発生しています。ローカルで正常に動作しますが(PHP 5.3.8を実行)、サーバーで次のエラーが発生します(PHP 5.3.10)

$ DBH-> setAttribute(PDO :: ATTR_ERRMODE、PDO :: ERRMODE_EXCEPTION);なし

致命的なエラー:108行目の/.../...php内の非オブジェクトでメンバー関数setFetchMode()を呼び出す

$ DBH-> setAttribute(PDO :: ATTR_ERRMODE、PDO :: ERRMODE_EXCEPTION);を使用します。

SQLSTATE [42000]:構文エラーまたはアクセス違反:1142SELECTコマンドがユーザー'...' @ '205.186.180.26' fortable'invited'に対して拒否されました

これが私のコードです:

class guest {
    public $id;
    public $guest_name;
    public $url_phrase;
}

$guest = new guest;

if (isset($_GET['p'])) {
    $url_phrase = urldecode($_GET['p']); 
} else if (isset($_POST['p'])) {
    $url_phrase = urldecode($_POST['p']); 
}

if (isset($url_phrase)) {

    try {

    $DBH = new PDO("mysql:host=myhost.com;dbname=mydbname", "myusername", "mypassword");
    $DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

    $url_phrase = $DBH->quote($url_phrase);
    $sql = "SELECT id, guest_name, url_phrase FROM mydbname.invited WHERE url_phrase = $url_phrase";

    $stmt = $DBH->query($sql);
    $stmt->setFetchMode(PDO::FETCH_INTO, new guest);

    $guestNumber = $stmt->rowCount();

    if($guestNumber > 0) {
        etc...  
    }
    if($guestType == "solo") {
        foreach($stmt as $guest) {
            $name = $guest->guest_name;
            etc...  
        }
    }
} else {
    other stuff.. etc..
    $DBH = null;
} catch (PDOException $e) {
    echo $e->getMessage();
}
}

このユーザーとして正常に機能する単純なselectステートメントを取得しました(パーミッションに関連しているとは思いません)。私の問題は、PDOの実装にあるようです。このエラーを取り除くにはどうすればよいですか?私はこれを台無しにしている奇妙な方法でステートメントを準備/実行していますか?助けてくれてありがとう

4

5 に答える 5

2

サーバーのアクセスの問題のように聞こえます:

SQLSTATE [42000]:構文エラーまたはアクセス違反:1142SELECTコマンドがユーザー'...' @ '205.186.180.26' fortable'invited'に対して拒否されました

スクリプトがアクセスできることを確認するために、CLI(またはPHP以外の他のSQLクライアント)からテストしましたか?

スクリプトを実行しているユーザーにアクセスを許可するためにデータベースにログインするか、スクリプトで使用している資格情報がサーバー環境のデータベースに対して正確であることを確認する必要があります。

于 2012-07-09T22:18:46.750 に答える
1

同じエラーを受け取りました。dev DB 名が本番 DB 名と異なるため、このエラーが発生しました。コード内のデータベースの名前を本番用の DB 名に変更したところ、機能しました。

ありがとう

于 2016-01-06T20:18:31.963 に答える
-2

アクセス違反があります:

Syntax error or access violation

使用しているユーザー/ホスト:

1142 SELECT command denied to user '...'@'205.186.180.26'

テーブル「招待済み」から選択できません

于 2012-07-09T22:20:11.467 に答える