我有两张具有相同结构的表格。 Iam尝试将整个记录从一个表移动到另一个表,然后从源表中删除。如果我单独执行这两个语句就可以了,即选择并插入2.删除。
我如何组合这两个sql语句,以便两个语句都在一个语句中,并且可以一个接一个地执行。到目前为止,这是mysql语句,它没有执行
$q=" INSERT INTO archived (SELECT * FROM table1 WHERE id='$id') ;
DELETE FROM table1 WHERE id='$id'; ";
答案 0 :(得分:1)
您可以使用一个SQL语句字符串执行多个SQL语句,方法是用分号分隔它们并将最终语句传递给mysqli_multi_query()
函数。
$con = new mysqli('localhost', 'user', 'pass', 'demo');
// username is user , password is pass ,connecting to the demo database on the localhost host:
if($con->connect_errno > 0){
die('Unable to connect to database [' . $db->connect_error . ']');
}
$sql = "INSERT INTO archived SELECT * FROM table1 WHERE id='$id';";
$sql .= "DELETE FROM table1 WHERE id='$id'; ";
if (!$mysqli->multi_query($sql)) {
echo "Multi query failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
else{
echo "Executed successfully";
}
你可以做到
function mysql_multiquery($queries,$conn)
{
$queries = explode(";", $queries);
foreach ($queries as $query)
$query = mysql_query(trim($query),$conn);
}
通话功能
mysql_multiquery($sql,$conn);
答案 1 :(得分:0)
如果您只想从php发送一个命令,请使用这两个查询编写一个存储过程。然后你的php命令执行程序。