将行插入具有auto_increment列的表中

问题描述 投票:12回答:5

我正在处理具有4列的表,第一个是一个称为id的自动递增整数。

如果要使用mysqli准备的语句插入该表,则在插入有效的查询时会遇到麻烦。使用phpMyAdmin它告诉我将其设置为NULL。我已经试过了:

$query = "INSERT INTO tbl (id, col2, col3, col4) VALUES ('NULL', ?, ?, ?)";
$stmt -> bind_param("ssi", $col2, $col3, $col4)

还有这个

$query = "INSERT INTO tbl (id, col2, col3, col4) VALUES (NULL, ?, ?, ?)";
$stmt -> bind_param("ssi", $col2, $col3, $col4)

并且仅给bind_param 3个参数(最后3个)。这些都不起作用。我也尝试过:

$null = NULL;
$query = "INSERT INTO tbl (id, col2, col3, col4) VALUES (?, ?, ?, ?)";
$stmt -> bind_param("issi", $null, $col2, $col3, $col4);

这些工作都没有。是否有插入这种类型表的标准化方法?

php mysql insert mysqli auto-increment
5个回答
16
投票

只需跳过id字段,MySQL会自动填充它:

$query = "INSERT INTO tbl (col2, col3, col4) VALUES (?, ?, ?)";
$stmt->bind_param("ssi", $col2, $col3, $col4)

6
投票

如果id字段是auto_increment,则不要在insert查询中指定它:

$query = "INSERT INTO tbl (col2, col3, col4) VALUES (?, ?, ?)";

并且,当然,不要尝试将任何参数绑定到它;-)

由于它是由MySQL生成的,因此无需传递该列。


4
投票

这应该起作用,因为id是由mysql自动添加的(因此增加):

 $query = "INSERT INTO tbl (col2, col3, col4) VALUES (?, ?, ?)";

在某些情况下,您必须显式插入auto_incremtnt字段,如果是这种情况,则可以使用INSERT IGNORE语句,有关更多信息,请参见mysql手册。


2
投票

这一个

$query = "INSERT INTO tbl (id, col2, col3, col4) VALUES (NULL, ?, ?, ?)";
$stmt -> bind_param("ssi", $col2, $col3, $col4)

应该可以工作。您得到的确切错误是什么?

现在我看起来更好了,您有$ query和$ stmt。你之间有什么?可能您缺少了一部分。

应该是

$stmt = $mysqli->prepare("INSERT INTO tbl (id, col2, col3, col4) VALUES (NULL, ?, ?, ?)");
$stmt -> bind_param("ssi", $col2, $col3, $col4);
$stmt ->execute();

-2
投票
$sql=("SELECT max(id) id FROM tbl_uploads where username='{$_SESSION['username']}'");
$result_set=mysqli_query($conn,$sql) or die ("<b>Error:</b> Problem on Retrieving Image From upload folder.<br/>" . mysqli_error($con));

 while($row=mysqli_fetch_array($result_set))
 {


        $id=$row['id']+1; // used it for increament that is not working

your code
}
© www.soinside.com 2019 - 2024. All rights reserved.