php - 添加将 id 复制到另一行的行时出现 Mysql 错误

标签 php mysql

我有一个代码可以执行此查询并按预期工作:

INSERT INTO items (name) VALUES (\'TEC TEST !"#!12\')

但是当我将此行添加到其末尾时,它失败了:

; SELECT @last_id := MAX(id) FROM ".$table_name."; UPDATE ".$table_name." SET sortingId = id WHERE id = @last_id;

我在 google 和 stackoverflow 上进行了搜索,但找不到任何符合我的问题的案例:(

我的php调用代码是:

$table_name = $this->_request['table']; 
$data = $this->_request['data'];

$sql0 = "INSERT INTO ".$table_name." (";
$sql1 = " VALUES (";
foreach($data as $key=>$value){
    $sql0 .= $key.",";
    if(is_array($value)) { 
        if($value[1] == 'date')             
            $sql1 .=  $this->db_escape($value[0]).",";
        if($value[1] == 'float')
            $sql1 .= $value.",";
    }else 
        $sql1 .= $this->db_escape($value).",";
}
$sql0 = substr($sql0, 0, -1).")";
$sql1 = substr($sql1, 0, -1).")";
$sql2 = "SELECT @last_id := MAX(id) FROM items; UPDATE items SET sortingId = id WHERE id = @last_id;";

$string = stripslashes($sql0.$sql1.$sql2);

$sql = mysqli_query($this->db, $sql0.$sql1.$sql2);
if(mysqli_insert_id($this->db) > 0){                
    $this->response($this->json(array( 'inserted_id' => mysqli_insert_id($this->db))), 200);
}

$error = array('status' => "Failed", "msg" => "Failed To Insert ".$string);
$this->response($this->json($error), 400);

更新:

这样的调用完成时没有错误,但新创建的行上的 sortingId 为 0。它应该是由 auto_increment 生成的 id 的 Int

$sql = mysqli_query($this->db, $sql0.$sql1);
$sql = mysqli_query($this->db, $sql2);

if(mysqli_insert_id($this->db) > 0){                
    $this->response($this->json(array( 'inserted_id' => mysqli_insert_id($this->db))), 200);

}

最佳答案

您不能使用 mysqli_query 进行多重查询,最好始终分隔查询。

如果你实在无能为力,PHP 中有这个函数:

mysqli_multiquery(...)

关于php - 添加将 id 复制到另一行的行时出现 Mysql 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49131559/

相关文章:

PHP 后期计算

PHP MYSQL 相同的数字,相同的类型,不同的结果

php - 如何使用 INSERT AND COUNT 创建 SQL 命令

php - 如何在WordPress中设置动态 `home`和 `siteurl`?

PHP:用一个查询更新多个表行

php - 在 PHP 中从 ISO C 时间戳转换为整数纪元

php - 如何在 laravel 5.3 上从 user_id 获取用户名?

mysql - 如何在 ZF2 中获取 SQL 查询中出现的次数

mysql - 注入(inject)的服务不断抛出 NullPointerException

php - Laravel 文件夹结构