我有一个相当大的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是否已经处理好了事情?
答案 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插入列,因为它将自动按数据库
自动递增希望这个帮助