Php 无法使用PDO在数据库中插入数据
我想使用PDO创建一个注册表单,但是由于未知的原因,除了写入数据库之外,一切都正常 从周五开始我就被卡住了,我是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
<?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>