Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法使用PDO在数据库中插入数据_Php_Sql_Forms_Pdo_Insert - Fatal编程技术网

Php 无法使用PDO在数据库中插入数据

Php 无法使用PDO在数据库中插入数据,php,sql,forms,pdo,insert,Php,Sql,Forms,Pdo,Insert,我想使用PDO创建一个注册表单,但是由于未知的原因,除了写入数据库之外,一切都正常 从周五开始我就被卡住了,我是PDO的初学者,我相信我没有看到什么,但我不知道是什么。。。 有什么想法吗 <?php include('bdd.php'); //Allows to connect to the db from an other file ?> <form name="inscription" action="confirmation.php" method="PO

我想使用PDO创建一个注册表单,但是由于未知的原因,除了写入数据库之外,一切都正常

从周五开始我就被卡住了,我是PDO的初学者,我相信我没有看到什么,但我不知道是什么。。。 有什么想法吗

    <?php

include('bdd.php'); //Allows to connect to the db from an other file

?>


<form name="inscription" action="confirmation.php" method="POST">
  <label for 'prenom'>Prénom: </label>
  <input type="text" name="prenom" required placeholder="Prénom"/>
  <label for 'nom'>Nom: </label>
  <input type="text" name="nom" required placeholder="Nom"/>
  <label for 'passe'>Mot de passe : </label>
  <input type="password" name="passe" required/>
  <label for 'confirm_passe'>Confirmez le mot de passe : </label>
  <input type="password" name="passe" required/>
  <label for 'email'>Email: </label>
  <input type="email" name="email"/ required placeholder="Adresse e-mail">
  <label for 'telephone'>Téléphone: </label>
  <input type="telephone" name="telephone"/ required placeholder="ex: 0123456789">
  <select name="fonction" id="fonction" required="required">
    <option value="">Selectionnez votre fonction</option>
    <option value="choix1">Présiden(e)</option>       
    <option value="choix2">Vice-Président(e)</option>
    <option value="choix3">Administrateur</option>
    <option value="choix4">Directeur/trice</option>
    <option value="choix5">Travailleur social</option>
    <option value="choix6">Secrétaire</option>
</select>
<input type="submit" value="send">
</form>



<?php


if(!empty($_POST['inscription'])){

if ( $_POST['confirm_passe'] != $_POST['passe'] ){
    echo "Passowords don't match";
}

$req = $db->prepare('INSERT INTO inscrits (prenom, nom, passe, telephone, email, fonction, droits) VALUES(:prenom, :nom, :passe, :telephone, :email, :fonction, 0)');
          $req->execute(array(
          'prenom' => $_POST['prenom'],
          'nom' => $_POST['nom'],
          'passe' => $_POST['passe'],
          'telephone' => $_POST['telephone'],      
          'email' => $_POST['email'],
          'fonction' => $_POST['fonction'],
          'droits' => $_POST['droits'],
          ));

}
?>

名称:
笔名:
路况:
确认通行证:
电邮:
电话:
Selectionnez votre功能
普雷塞登(e)
副总裁(e)
管理员
主任/三色
社会分娩
塞雷泰尔

输入参数中的键必须与SQL中声明的键匹配

试试这个:

编辑错误消息:

设置:

在bdd.php文件中进行pdo错误处理

然后


您缺少
:函数
prepare()
中的droits
(内部值)

$req = $db->prepare('INSERT INTO inscrits (prenom, nom, passe, telephone, email, fonction, droits) VALUES (:prenom, :nom, :passe, :telephone, :email, :fonction, :droits)');
          $req->execute(array(
          'prenom' => $_POST['prenom'],
          'nom' => $_POST['nom'],
          'passe' => $_POST['passe'],
          'telephone' => $_POST['telephone'],      
          'email' => $_POST['email'],
          'fonction' => $_POST['fonction'],
          'droits' => $_POST['droits'],
          ));
}

好的,我终于找到了一个真正有效的方法,下面是一个注册表单的代码,如果将来有人需要它,需要管理员验证它:

<?php

include('bdd.php'); //File that allows you to get connected to the server


if(!empty($_POST)){

  // Form has been submitted
  if ( $_POST['confirm_passe'] != $_POST['passe'] ) echo "Passwords don't match";

  $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  try{
    //
    $req = $db->prepare('INSERT INTO your_table (table1, table2, table3, table4, rights) VALUES(:value1, :value2, :value3, :value4, :rights)');

    $req->execute(array(
      ':value1' => $_POST['table1'],
      ':value2' => $_POST['table2'],
      ':value3' => $_POST['table3'],
      ':value4' => $_POST['table4'],      
      ':rights' => 0
    ));
    header('location:confirmation.php'); //Redirects you in a page that informs you that you are now registered
  }
   catch (PDOException $e) {
      print $e->getMessage ();
  }
}
?>
<!--And here goes the form that you can adapt at will -->
<form name="inscription" action="inscription.php" method="POST">
  <label for="prenom">Prénom: </label>
  <input type="text" name="prenom" required placeholder="Prénom"/>
  <label for 'nom'>Nom: </label>
  <input type="text" name="nom" required placeholder="Nom"/>
  <label for 'passe'>Mot de passe : </label>
  <input type="password" name="passe" required/>
  <label for="confirm_passe">Confirmez le mot de passe : </label>
  <input type="password" name="confirm_passe" required/>
  <label for 'email'>Email: </label>
  <input type="email" name="email"/ required placeholder="Adresse e-mail">
  <label for 'telephone'>Téléphone: </label>
  <input type="telephone" name="telephone"/ required placeholder="ex: 0123456789">
  <select name="fonction" id="fonction" required="required">
    <option value="">Selectionnez votre fonction</option>
    <option value="choix1">Présiden(e)</option>       
    <option value="choix2">Vice-Président(e)</option>
    <option value="choix3">Administrateur</option>
    <option value="choix4">Directeur/trice</option>
    <option value="choix5">Travailleur social</option>
    <option value="choix6">Secrétaire</option>
</select>
<input type="submit" value="send">
</form>

能否将您的
PDO::ATTR_ERRMODE
设置为
PDO::ERRMODE_异常
,这将有助于显示sql错误。您是否在数据库中存储未加密的密码?!请看ASAP@user3628383:您检查了吗?谢谢您的快速回答,但我的数据库中仍然没有包含此代码。。。事实上,我并没有得到任何错误,我得到了重定向到我想要的地方。有没有办法让我知道哪里出了问题?好吧,我试了一下,然后。。。没有错误。我的数据库里还是什么都没有。似乎忽略了检查两个密码是否相同。您复制了我的代码吗?我又变了。现在试试看是的,试了,试了,试了又试,但还是什么都没有。。。这个代码到底出了什么问题??
$req = $db->prepare('INSERT INTO inscrits (prenom, nom, passe, telephone, email, fonction, droits) VALUES (:prenom, :nom, :passe, :telephone, :email, :fonction, :droits)');
          $req->execute(array(
          'prenom' => $_POST['prenom'],
          'nom' => $_POST['nom'],
          'passe' => $_POST['passe'],
          'telephone' => $_POST['telephone'],      
          'email' => $_POST['email'],
          'fonction' => $_POST['fonction'],
          'droits' => $_POST['droits'],
          ));
}
<?php

include('bdd.php'); //File that allows you to get connected to the server


if(!empty($_POST)){

  // Form has been submitted
  if ( $_POST['confirm_passe'] != $_POST['passe'] ) echo "Passwords don't match";

  $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  try{
    //
    $req = $db->prepare('INSERT INTO your_table (table1, table2, table3, table4, rights) VALUES(:value1, :value2, :value3, :value4, :rights)');

    $req->execute(array(
      ':value1' => $_POST['table1'],
      ':value2' => $_POST['table2'],
      ':value3' => $_POST['table3'],
      ':value4' => $_POST['table4'],      
      ':rights' => 0
    ));
    header('location:confirmation.php'); //Redirects you in a page that informs you that you are now registered
  }
   catch (PDOException $e) {
      print $e->getMessage ();
  }
}
?>
<!--And here goes the form that you can adapt at will -->
<form name="inscription" action="inscription.php" method="POST">
  <label for="prenom">Prénom: </label>
  <input type="text" name="prenom" required placeholder="Prénom"/>
  <label for 'nom'>Nom: </label>
  <input type="text" name="nom" required placeholder="Nom"/>
  <label for 'passe'>Mot de passe : </label>
  <input type="password" name="passe" required/>
  <label for="confirm_passe">Confirmez le mot de passe : </label>
  <input type="password" name="confirm_passe" required/>
  <label for 'email'>Email: </label>
  <input type="email" name="email"/ required placeholder="Adresse e-mail">
  <label for 'telephone'>Téléphone: </label>
  <input type="telephone" name="telephone"/ required placeholder="ex: 0123456789">
  <select name="fonction" id="fonction" required="required">
    <option value="">Selectionnez votre fonction</option>
    <option value="choix1">Présiden(e)</option>       
    <option value="choix2">Vice-Président(e)</option>
    <option value="choix3">Administrateur</option>
    <option value="choix4">Directeur/trice</option>
    <option value="choix5">Travailleur social</option>
    <option value="choix6">Secrétaire</option>
</select>
<input type="submit" value="send">
</form>