MySQL使用自动递增计数器将表格添加到表中

时间:2014-09-03 03:20:24

标签: php mysql

我有一个相当大的MySQL编码表。这就是我到目前为止所拥有的:

$con=mysqli_connect("127.0.0.1","//removed for safety","//removed for safety", "mydb");
// Check connection
if (mysqli_connect_errno()) 
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$firstname = mysqli_real_escape_string($con, test_input($_POST['firstname']));
$lastname = mysqli_real_escape_string($con, test_input($_POST['lastname']));
$middleinitial = mysqli_real_escape_string($con, test_input($_POST['middleinitial']));
$school = mysqli_real_escape_string($con, test_input($_POST['school']));

......等等

function test_input($data)
{
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}

我对MySQL很新,我的表包含一个从1开始的自动增量计数器ID。我相信导致此代码显示错误消息,因为错误消息显示为& #34;列数与第1行和第34行的值计数不匹配; (我的表现在有点乱,但我知道值与列匹配):

$sql = "INSERT INTO User VALUES('$username', '$password', '$school', ...)";

if (!mysqli_query($con, $sql))
{
    die('Error: ' . mysqli_error($con));
}

echo "added results";

由于我是新手,我不太清楚如何处理这里的自动增量情况。我尝试添加' NULL'之前' $ username',但这没有用。如何告诉计算机让MySQL自己处理ID计数器?或者我的代码还有其他问题吗?

P.S。我是否真的需要test_input函数,或者mysqli_real_escape_string是否已经处理好了事情?

3 个答案:

答案 0 :(得分:1)

具体。使用列名称可以插入值。

P.S。:对于使用AUTO_INCREMENT的ID,您无需指定列名称及其值。

$sql = "INSERT INTO User (col1, col2, col3) VALUES('$username', '$password', '$school');

在示例中。 col1是您插入$username

值的地方

答案 1 :(得分:0)

您的自动增量将跟踪自己;否则,“自动增量”中将没有“自动”

答案 2 :(得分:0)

Auto_increment会自动计入数据库,因此您不必在php代码中插入

$sql = "INSERT INTO User (col1, col2, col3) VALUES('$username', '$password', '$school');

但如果你用php编写,你也可以这样做

$sql = "INSERT INTO User (id, col1, col2, col3) VALUES(0,'$username', '$password', '$school');

这不会将值0插入列,因为它将自动按数据库

自动递增

希望这个帮助