fdf*_*fds 12 php mysql mysqli insert auto-increment
我在一个有4列的表上工作,第一个是一个名为id的自动递增整数.
如果我要使用mysqli预处理语句插入到此表中,我一直无法插入有效的查询.使用PHPmyAdmin它告诉我将它赋予NULL.我试过这个:
$query = "INSERT INTO tbl (id, col2, col3, col4) VALUES ('NULL', ?, ?, ?)";
$stmt -> bind_param("ssi", $col2, $col3, $col4)
Run Code Online (Sandbox Code Playgroud)
还有这个
$query = "INSERT INTO tbl (id, col2, col3, col4) VALUES (NULL, ?, ?, ?)";
$stmt -> bind_param("ssi", $col2, $col3, $col4)
Run Code Online (Sandbox Code Playgroud)
并且只给出bind_param 3个参数(最后3个).这些都不奏效.我也试过这个:
$null = NULL;
$query = "INSERT INTO tbl (id, col2, col3, col4) VALUES (?, ?, ?, ?)";
$stmt -> bind_param("issi", $null, $col2, $col3, $col4);
Run Code Online (Sandbox Code Playgroud)
这些都不起作用.是否有标准化的方式插入这种类型的表?
Tat*_*nen 17
只需跳过该id字段,MySQL将自动填写:
$query = "INSERT INTO tbl (col2, col3, col4) VALUES (?, ?, ?)";
$stmt->bind_param("ssi", $col2, $col3, $col4)
Run Code Online (Sandbox Code Playgroud)
如果该id字段是auto_increment,则只需在insert查询中不指定它:
$query = "INSERT INTO tbl (col2, col3, col4) VALUES (?, ?, ?)";
Run Code Online (Sandbox Code Playgroud)
当然,不要试图绑定任何参数;-)
由于它是由MySQL生成的,因此无需传递该列.
这应该可行,因为id由mysql自动添加(因此增加):
$query = "INSERT INTO tbl (col2, col3, col4) VALUES (?, ?, ?)";
Run Code Online (Sandbox Code Playgroud)
在某些情况下,您必须显式插入auto_incremtnt字段,如果是这种情况,则可以使用该INSERT IGNORE语句,有关更多信息,请参见mysql手册。