【发布时间】:2017-07-01 13:24:29
【问题描述】:
我正在尝试向我的数据库中插入一个具有唯一 ID 的新条目。我的代码中的某个地方是一个错误,但我找不到它。你能帮忙吗?
不能选择自动增量
$newConversationID = uniqid();
$checkID = $DBcon->query("SELECT * FROM tbl_conversations WHERE conversation_id=$newConversationID");
$countID = $checkID->num_rows;
while($countID) {
if ($countID==0) {
$DBcon->query("INSERT INTO tbl_conversations (conversation_id,user_id, date) VALUES('$newConversationID','$fromID',UNIX_TIMESTAMP())");break;
} else {
$newConversationID = uniqid();
$checkID = $DBcon->query("SELECT * FROM tbl_conversations WHERE conversation_id=$newConversationID");
$countID = $checkID->num_rows;
}
}
【问题讨论】:
-
您已经在使用支持 prepared statements 的 API 和有界变量输入,您应该使用带占位符的参数化查询(prepared statements)来保护您的数据库免受SQL-injection !开始使用
mysqli::prepare()和mysqli_stmt::bind_param()。 -
@Qirel 在这种情况下,由于数据是在脚本中生成的,因此并没有真正的区别。
-
虽然这是真的,但要养成一个好习惯。准备任何变量。
-
@Qirel 同意,我不是想开始争论 :)
-
似乎我们在发表评论之前就达成了一致! ;-)