2014-12-22 2 views
1

В настоящее время я работаю над проектом, но не могу продолжать из-за ошибки, которая продолжает наступать, и я не знаю, почему, но, возможно, вы, ребята, знаете. Когда я заполняю свою форму и хочу вставить свои данные в базу данных, я получаю сообщение об ошибке с обратной связью. Что ниже.

так вот код:

// write new users data into database 
     $sql = "INSERT INTO users (user_name, user_password_hash, user_email, user_creation_timestamp, user_activation_hash, user_provider_type, user_persnaam, user_bondsnummer, user_telefoonnummer, user_leeftijd, user_enkelsterkte, user_dubbelsterkte, user_geslacht) 
       VALUES (:user_name, :user_password_hash, :user_email, :user_creation_timestamp, :user_activation_hash, :user_provider_type, :user_persnaam, :user_bondsnummer, :user_telefoonnummer, :user_leeftijd, :user_dubbelsterkte, :user_enkelsterkte, :user_geslacht)"; 
     $query = $this->db->prepare($sql); 
     $query->execute(array(':user_name' => $user_name, 
           ':user_password_hash' => $user_password_hash, 
           ':user_email' => $user_email, 
           ':user_persnaam' => $user_persnaam, 
           ':user_bondsnummer' => $user_bondsnummer, 
           ":user_telefoonnummer" => $user_telefoonnummer, 
           ":user_enkelsterkte" => $user_enkelsterkte, 
           ":user_dubbelsterkte" => $user_dubbelsterkte, 
           ":user_leeftijd" => $user_leeftijd, 
           ':user_geslacht' => $user_geslacht, 
           ':user_creation_timestamp' => $user_creation_timestamp, 
           ':user_activation_hash' => $user_activation_hash,         
           ':user_provider_type' => 'DEFAULT')); 
     $count = $query->rowCount(); 
     if ($count != 1) { 
      $_SESSION["feedback_negative"][] = FEEDBACK_ACCOUNT_CREATION_FAILED; 
      return false; 
     } 

проблема, кажется, что я не могу что-либо в моей базе данных писать, но я уверен, что я могу подключить и обновить все, но не писать. Поэтому проблема связана не с подключением к базе данных. Я думаю, что это имеет какое-то отношение к rowcount, но, возможно, вы, ребята, знаете, что случилось. Двойные кавычки не являются проблемой, которую я уже проверил.

Заранее спасибо

+2

Вы начали сеанс? Кроме того, добавьте '$ db-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);' сразу же после открытия соединения, посмотрите, дает ли оно что-либо. Добавьте отчет об ошибках в начало файла (ов) сразу после открытия тега < 'error_reporting (E_ALL); ini_set ('display_errors', 1); '. –

+0

Вы пытались сбросить rowCount, когда это правда, а также false? –

+0

Кроме того, ваши последовательности отключены, что может быть фактором. Я не знаю/не помню, если это имеет значение, но постарайтесь установить свои привязки в соответствии с той последовательностью, которая у вас есть в ваших значениях. –

ответ

0

Я не знаю, если это будет полезно, @fred дал вам несколько ключ, и вы сказали, что вы уверены, что соединение хорошо. Вот что я поймал:

INSERT INTO users 
      (user_name, 
      user_password_hash, 
      user_email, 
      user_creation_timestamp, 
      user_activation_hash, 
      user_provider_type, 
      user_persnaam, 
      user_bondsnummer, 
      user_telefoonnummer, 
      user_leeftijd, 
      user_enkelsterkte, /* here user_enkelsterkte is first */ 
      user_dubbelsterkte, /* here user_dubbelsterkte is second */ 
      user_geslacht) 
VALUES  (:user_name, 
      :user_password_hash, 
      :user_email, 
      :user_creation_timestamp, 
      :user_activation_hash, 
      :user_provider_type, 
      :user_persnaam, 
      :user_bondsnummer, 
      :user_telefoonnummer, 
      :user_leeftijd, 
      :user_dubbelsterkte, /* here user_dubbelsterkte is first */ 
      :user_enkelsterkte, /* here user_enkelsterkte is second */ 
      :user_geslacht) 

Если существует несоответствие типа столбца или длины, это не удастся.

Вот это лучший способ, чтобы написать ваш код будет:

$this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
if ($query = $this->db->prepare($sql)) { 
    // put code here 
}else{ 
    echo "\nPDO::errorInfo():\n"; 
    print_r($this->db->errorInfo()); 
} 

Вы можете сделать проверку ошибок на подключение, prepare() или execute().

Теперь вы должны выяснить, есть ли у вас ошибка.

+0

Я собираюсь попробовать. Все еще не удается найти ошибку. Возможно, это имеет какое-то отношение к моей настройке базы данных. Я еще не знаю. Попытка выяснить. Странно, если я удалю лишние типы, например, например. user_enkelsterkte. Он записывает в базу данных –

+0

Включите режим ошибок, поместите свой код в блок catch try и напечатайте ошибку. Это единственный способ узнать брокера. – meda

0
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') VALUES ('sebbz', '$2y$10$gEeDMLZQ.c.Mv/nRv6miJebw3/PAPpeCU' at line 1' in C:\xampp\htdocs\php-login\application\models\login_model.php:529 Stack trace: #0 C:\xampp\htdocs\php-login\application\models\login_model.php(529): PDOStatement->execute(Array) #1 C:\xampp\htdocs\php-login\application\controllers\login.php(239): LoginModel->registerNewUser() #2 C:\xampp\htdocs\php-login\application\libs\Application.php(52): Login->register_action() #3 C:\xampp\htdocs\php-login\index.php(27): Application->__construct() #4 {main} thrown in C:\xampp\htdocs\php-login\application\models\login_model.php on line 

У меня есть ошибка. Идти искать проблему. Может, кто-то быстрее меня. И если так не страшно сказать;)

+0

Также кажется, что данные не хранятся в моих переменных. Теперь он становится немного сложным –

Смежные вопросы