1

嗨,我在执行 PDO 准备语句期间遇到错误。我的本地开发工作正常,但是当我尝试插入到云中的 cleardb 时,会发生此错误:

SQLSTATE [42000]:语法错误或访问冲突:1142 INSERT 命令拒绝用户 'b2218f51d4a66e'@'191.235.136.58' 用于 /var/www/php1/CRUD.php:52 中的表 'user''

    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 回答