2016-11-20 3 views
0
<?php 
$user=htmlspecialchars($_POST['user']); 
$password=htmlspecialchars($_POST['password']); 
$email=htmlspecialchars($_POST['email']); 
//$number=htmlspecialchars($_POST['number']); 
$quater=htmlspecialchars($_POST['quater']); 
if (isset($user) && isset($password)&& isset($email) && isset($quater)) 
    { 
     try{ 
    $bdd = new PDO('mysql:host=localhost;dbname=library;charset=utf8', 'root', ''); 

} 
catch(Exception $e) 
{ 
     die('Erreur : '.$e->getMessage()); 
} 
$req = $bdd->prepare('INSERT INTO user(name, password, email, quater) VALUES(?,?,?,?)'); 
$req->execute(array('name'=> $user,'password'=>$password,'email'=>$email,'quater' => $quater)); 
} 
    else 
    { 
     echo "<p color=red >please fill all the fills above<p>"; 
    } 
?> 

получить следующую ошибкукосяк вставки в базу данных с помощью PHP вставки с использованием PDO

Предупреждение: PDOStatement :: Execute(): SQLSTATE [HY093]: Неверный номер параметра: параметр не был определен в [ ...}

ответ

2

Здесь вы используете разные виды заполнителей.

При использовании ? в качестве заполнителя вы связываетесь без имен и в правильном порядке. Если вы используете именованные заполнители (например, :name), порядок не имеет значения, но ключ в массиве должен соответствовать названному заполнителю.

Так что ваши два варианта для

  1. использовать именованные заполнители (который я думаю, что легче читать)
  2. Удалите индексы в вашем выполнить-массива

Так, с альтернативы один будет выглядеть как

$req = $bdd->prepare('INSERT INTO user (name, password, email, quater) VALUES (:name, :password, :email, :quater)'); 
$req->execute(array('name'=> $user, 'password' => $password, 'email' => $email, 'quater' => $quater)); 

Обратите внимание, что я заменил все заполнители, от ? до именованного, :name.

Alternative два будет выглядеть следующим образом

$req = $bdd->prepare('INSERT INTO user (name, password, email, quater) VALUES (?, ?, ?, ?)'); 
$req->execute(array($user, $password, $email, $quater)); 

Здесь вы увидите, что заполнители еще ?, но ключи удаляются в выполнении массива.

Здесь вы можете использовать ключи, но они должны быть 0-3 (поскольку они назначаются по умолчанию PHP).

Ссылка

+0

его до сих пор дают эти же ошибки после устранения его –

+0

Что делает ваш код выглядеть сейчас? – Qirel

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