Ошибка PHP PDO при выполнении и вставке в cleardb

Привет, я получаю сообщение об ошибке во время выполнения оператора подготовки PDO. Моя локальная разработка работает нормально, но когда я пытаюсь вставить в cleardb в облаке, возникает эта ошибка:

SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1142 Команда INSERT запрещена для пользователя «b2218f51d4a66e» @ «191.235.136.58» для таблицы «user» в /var/www/php1/CRUD.php:52

    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;
        }
    }
}

person surajnew55    schedule 23.04.2014    source источник


Ответы (1)


Это проблема с разрешениями. Пользователь вашей базы данных имеет разрешение INSERT для таблицы на вашем сервере разработки, но не на рабочем сервере, поэтому вам нужно будет изменить права пользователя, используя GRANT на рабочем сервере.

person GMemory    schedule 23.04.2014
comment
Если да, то почему этот запрос отлично работает из workbench mysql: INSERT INTO as_754979fd4dcbfcb.user (userId, userName, passWord, create_DateStamp, update_DateStamp, e_mail) VALUES (по умолчанию, 1111, 2222, now(), по умолчанию, [email protected]) ; - person surajnew55; 23.04.2014
comment
Вы входите в Workbench как пользователь b2218f51d4a66e? Кроме того, имейте в виду, что вторая часть идентификатора пользователя также имеет значение (например, 'b2218f51d4a66e'@'191.235.136.58' не совпадает с 'b2218f51d4a66e'@'%', последний разрешает доступ с любого хоста в отличие от одного хоста) - person GMemory; 24.04.2014