我有一个这样的数组:
0 => array:2 [
"name" => "Data1"
"type" => "value1"
],
1 => array:2 [
"name" => "Data2"
"type" => "value2"
]
Run Code Online (Sandbox Code Playgroud)
我想在数据库中的单个查询中插入它们并检索它们的 id 而不需要任何额外的查询。
到目前为止我已经尝试过 insertGetId
MyModel::insertGetId($array)
Run Code Online (Sandbox Code Playgroud)
但我注意到它插入了大量行但返回了最后一个 id。
我想暂时锁定一个表,以防止其他并发进程对其进行更改.原因是这个表将被复制到临时表,更改,然后被复制回来(实际上删除了原始表并重命名了新表).然后在完成所有这些之后,我想解锁表格并希望在锁定恢复期间尝试任何尝试.
我还需要能够从已锁定的表中读取以构建新表.
这是我尝试过的,但它似乎不起作用.
$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME, DB_PORT);
$mysqli->autocommit(false)
// create a table to hold parts to keep
$q1 = "CREATE TABLE new_table LIKE my_table;";
$res1 = $mysqli ->query($q1);
// Lock table to avoid concurrent update issues
$q2 = "LOCK TABLE my_table WRITE;";
$res2 = $mysqli ->query($q2);
// Insert data to keep into new table
$q3 = "INSERT INTO new_table SELECT * FROM my_table WHERE some_id IN (SELECT ID FROM table2)";
$res3 = $mysqli ->query($q3);
// drop …Run Code Online (Sandbox Code Playgroud)