我正在处理具有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);
这些工作都没有。是否有插入这种类型表的标准化方法?
只需跳过id
字段,MySQL会自动填充它:
$query = "INSERT INTO tbl (col2, col3, col4) VALUES (?, ?, ?)";
$stmt->bind_param("ssi", $col2, $col3, $col4)
如果id
字段是auto_increment
,则不要在insert
查询中指定它:
$query = "INSERT INTO tbl (col2, col3, col4) VALUES (?, ?, ?)";
并且,当然,不要尝试将任何参数绑定到它;-)
由于它是由MySQL生成的,因此无需传递该列。
这应该起作用,因为id是由mysql自动添加的(因此增加):
$query = "INSERT INTO tbl (col2, col3, col4) VALUES (?, ?, ?)";
在某些情况下,您必须显式插入auto_incremtnt字段,如果是这种情况,则可以使用INSERT IGNORE
语句,有关更多信息,请参见mysql手册。
这一个
$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();
$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
}