gpt4 book ai didi

php - 如何选择 id 以在具有多个数据的插入查询中使用它?

转载 作者:行者123 更新时间:2023-11-28 23:24:20 24 4
gpt4 key购买 nike

我有这个问题,

$cellId = $db->insert_multiple_data("INSERT INTO tbl_attendance",
array('tbl_worksheets_id','tbl_students_id','status','class_dt'),
$values_array);

$values_array 在哪里,

$values_array[] = array($id1,$id2,$status,$datetime);

它在for循环中。

现在这是我的 insert_multiple_data(),

public function insert_multiple_data($sql,$fields,$values_array){
$set = '';
$str = "";
$comma_separated2 = implode(",", $fields);
foreach($values_array as $values){
$comma_separated = implode("','", $values);
$comma_separated = "'".$comma_separated."'";
$str = $str."(".$comma_separated."),";
}
$sql = $sql."(".$comma_separated2.") VALUES ".rtrim($str, ",");
$stm = $this->conn->prepare($sql);
$stm->execute();
return $this->conn->lastInsertId();
}

所以上面的这些代码是有效的。我需要的是使状态成为一个id,如何从数据库中选择状态(字符串)的id?然后用上面的查询插入?

最佳答案

请在此处查看此答案:MySQL LAST_INSERT_ID() used with multiple records INSERT statement

这是不可能的,因为 MySQL 被设计为能够与复制一起工作。如果可以从长插入返回多个 ID,则可能会使过程不确定。 (所以它总是只返回第一个)

另一件事:您的代码不安全(来自 SQL 注入(inject)攻击)。它使用准备好的语句,但不使用参数。这些值只是插入到字符串中。要么使用带参数的预处理语句,要么使用 mysqli::real_escape_string 进行转义。 (只有当数据库连接和 PHP 环境都设置为相同的编码(例如 UTF-8)时,转义才是安全的。)

关于php - 如何选择 id 以在具有多个数据的插入查询中使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39995746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com