PHP MySQL - 将记录移动到另一个表,选择,插入,删除

时间:2014-04-19 13:57:20

标签: php mysql sql

我有两张具有相同结构的表格。 Iam尝试将整个记录从一个表移动到另一个表,然后从源表中删除。如果我单独执行这两个语句就可以了,即选择并插入2.删除。

我如何组合这两个sql语句,以便两个语句都在一个语句中,并且可以一个接一个地执行。到目前为止,这是mysql语句,它没有执行

$q="  INSERT INTO archived (SELECT * FROM table1 WHERE id='$id') ;

DELETE FROM table1 WHERE id='$id'; ";

2 个答案:

答案 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命令执行程序。