PHP:insert into创建2行

时间:2014-02-14 01:46:43

标签: php mysql

我正在制作用户表。

表格如下:

CREATE TABLE `a9025688_chat`.`users` (
    `id` INT( 10 ) NOT NULL AUTO_INCREMENT ,
    `username` VARCHAR( 20 ) NOT NULL ,
    `password` VARCHAR( 40 ) NOT NULL ,
    PRIMARY KEY ( `id` )
) ENGINE = MYISAM

我使用的PHP代码是:

<?php
$hostname_localhost ="***";
$database_localhost ="***";
$username_localhost ="***";
$password_localhost ="***";

$localhost = mysql_connect($hostname_localhost,$username_localhost,$password_localhost)
or
trigger_error(mysql_error(),E_USER_ERROR);

mysql_select_db($database_localhost, $localhost);

$username = $_POST['username'];
$password = $_POST['password'];


$sql = "INSERT INTO `a9025688_chat`.`users` (
`id` ,
`username` ,
`password`
) VALUES ( NULL , '$username', '$password'
)";
$result = mysql_query($sql);
if (!$result) die ("db access failed");

?>

但是,当我尝试创建用户时,会创建其中两个用户。这里有什么我想念的吗?

3 个答案:

答案 0 :(得分:0)

为什么要为ID插入null?这可能是它插入两行的原因。您永远不应该为主键传入null进行插入。

答案 1 :(得分:0)

您的代码没有问题。也许是插入后重新发布数据(或刷新页面)的东西。检查您可能的javascripts或浏览器插件。

答案 2 :(得分:0)

请勿使用mysql_*个功能!

永远不要直接使用$_POST中的值而不进行过滤和准备。

使用PDO有很多原因,包括安全性。有关更深入的信息,请参阅this tutorial

以下是another example如何使用PDO

如果您需要一些帮助,可以使用易于使用的包装类:PDO Wrapper