我尝试使用PHP和MySQL创建一个Web应用程序,当我使用PHP将数据插入到我的表中时,条目的双重记录被放入表中。我已经隔离了插入部分,因此底部是die();
,但无法使其正常工作。有人可以告诉我出了什么问题吗?
<?php
$email = $_POST['email1'];
$password = '12345';
$name = $_POST['name'];
$tele = $_POST['tele'];
$registo = gmdate('Y-m-d', time());
$id_priv = 1;
$server = 'localhost';
$baseDados = 'dbase101';
$userName = 'root';
$passWord = '';
$conn = new PDO('mysql:host=' . $server . ';dbname=' . $baseDados . ';charset=utf8;', $userName, $passWord);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$insert = "INSERT INTO utilizadores (email, password, name, telephone, registry, id_priv) VALUES ('".$email."', '".$password."', '".$name."','".$tele."','".$registry."','".$id_priv."')";
$conn->exec($insert);
echo "New record created successfully";
die( );
修改
考虑到你的答案,我做了两件事:
1 - 我更改了代码以正确绑定参数。
2 - 我仔细检查了这个文件的调用方式。事实证明,我使用AJAX使用外部js文件提交表单,并且在包含表单的文件底部写了相同的函数,这样表单就被提交了两次。
const SERVIDOR = '127.0.0.1';
const BD = 'prime101';
const USER = 'root';
const PASS = '';
$conn = new PDO('mysql:host=' . SERVIDOR . ';dbname=' . DB . ';charset=utf8;', USER, PASS);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO utilizadores (email, password, nome_pessoa, telefone, registo, id_priv)
VALUES (?, ?, ?, ?, ?, ?)";
$insert = $conn->prepare($sql);
$insert->bindParam(1, $email, PDO::PARAM_STR);
$insert->bindParam(2, $password, PDO::PARAM_STR);
$insert->bindParam(3, $nome_pessoa, PDO::PARAM_STR);
$insert->bindParam(4, $telefone, PDO::PARAM_STR);
$insert->bindParam(5, $registo, PDO::PARAM_STR);
$insert->bindParam(6, $id_priv, PDO::PARAM_STR);
$insert->execute();
echo "New record created successfully";
die;
我要感谢大家的答案,这真的帮助我重写代码并分析问题的根源。 我也想为我的英语道歉,因为这不是我的第一语言,也不是为了做菜和问这个问题。