1

こんにちは、PDO 準備ステートメントの実行中にエラーが発生しました。私のローカル開発は正常に動作しますが、クラウドで cleardb に挿入しようとすると、次のエラーが発生します。

SQLSTATE[42000]: 構文エラーまたはアクセス違反: /var/www/php1/CRUD.php:52 のテーブル 'user'' のユーザー 'b2218f51d4a66e'@'191.235.136.58' に対する 1142 INSERT コマンドが拒否されました

    function create_User($firstname, $lastname, $username, $password, $address, $city, $zip, $country, $email) {
    global $dbh;
    $this->password = $password;
    $token = md5($this->salt1 . $this->password . $this->salt2);

    $this->sth = $dbh->prepare('INSERT INTO `Php_Project`.`User`
(        
userName,
passWord,
    create_DateStamp,
e_mail)

    VALUES
    (               
            :username,
    :token,
            NOW(),
    :email
    );

');

    $this->sth->bindParam(':username', $username, PDO::PARAM_STR);
    $this->sth->bindParam(':token', $token, PDO::PARAM_STR);
    $this->sth->bindParam(':email', $email, PDO::PARAM_STR);
    if ($this->sth->execute()) {
        $this->message = "true";
    } else {
        $this->message = "false";
    }

    if ($this->message == "true") {
        $userId = $dbh->lastInsertId();
        $this->sth = $dbh->prepare('INSERT INTO `Php_Project`.`user_Detail`
(    
firstName,
lastname,
adress,
zip,
city,
country,
userId)

    VALUES
    (       
        :firstname,
        :lastname,
        :address,
        :zip,
        :city,
        :country,
        :userId
    );');

        $this->sth->bindParam(':firstname', $firstname, PDO::PARAM_STR);
        $this->sth->bindParam(':lastname', $lastname, PDO::PARAM_STR);
        $this->sth->bindParam(':address', $address, PDO::PARAM_STR);
        $this->sth->bindParam(':zip', $zip, PDO::PARAM_INT);
        $this->sth->bindParam(':city', $city, PDO::PARAM_STR);
        $this->sth->bindParam(':country', $country, PDO::PARAM_STR);
        $this->sth->bindParam(':userId', $userId, PDO::PARAM_STR);
        if ($this->sth->execute()) {
            $this->message = true;
        } else {
            $this->message = false;
        }
    }
}
4

1 に答える 1

0

これは権限の問題です。データベース ユーザーは、INSERT開発サーバーではテーブルの権限を持っていますが、運用サーバーでは権限を持っていないため、運用サーバーを使用してユーザーの権限を変更する必要がありGRANTます。

于 2014-04-23T10:58:17.933 に答える