使用PHP时MySQL双重输入

时间:2017-02-09 17:26:34

标签: php mysql ajax

我尝试使用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;

我要感谢大家的答案,这真的帮助我重写代码并分析问题的根源。 我也想为我的英语道歉,因为这不是我的第一语言,也不是为了做菜和问这个问题。

0 个答案:

没有答案