php - 使用自动增量 ID 插入和更新记录

标签 php mysql

我正在尝试从上次查询中获取自动增量 ID 并更新同一行。另外,我想保留事务中的所有内容,并在出现问题时抛出用户友好的错误。你能帮忙吗?

    $parentSQL = "INSERT INTO TABLE1(test1, test2) VALUES ('" .$test1. "', '" .$test2. "')";
$result = mysql_query($parentSQL) or die(mysql_error());

$newId = MySql_Insert_Id();

$val = "MU".$newId;

$updateSQL = "UPDATE TABLE1 SET test3 = '" .$val. "' WHERE id= ".$newId." ";

$updateResult = mysql_query($updateSQL) or die(mysql_error());

$childSQL = "INSERT INTO TABLE2(testId, testCol) VALUES (" .$newId. ", '" .$testCol. "')";

$childResult = mysql_query($childSQL) or die(mysql_error());

最佳答案

这只是一个建议,但为什么不尝试使用存储过程呢?

在 MySQL 中

DELIMITER //
CREATE PROCEDURE test (
    IN param1 VARCHAR(20)
    , IN param2 VARCHAR(20)
    , IN param3 VARCHAR(20)
    , IN param4 VARCHAR(20)
)
BEGIN
    INSERT INTO TABLE1(test1, test2) VALUES (param1, param2);

    UPDATE TABLE1 SET test3 = CONCAT(param3, LAST_INSERT_ID());

    INSERT INTO TABLE2(testId, testCol) VALUES (LAST_INSERT_ID(), param4);
END//
DELIMITER ;

在 PHP 中,并使用 PDO 使用准备好的语句:

$q = $db->prepare("CALL test (?,?,?,?)");
$q->bindParam(1, $test1);
$q->bindParam(2, $test2);
$q->bindParam(3, $val);
$q->bindParam(4, $testCol);
$q->execute();

关于php - 使用自动增量 ID 插入和更新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8448067/

相关文章:

MySQL 同时对同一个表执行 2 个查询

mysql - 从 sql 查询中获取第一/第二/第三个元素

php - Backbone Sync 返回一个空的 $_POST 数组

php - 使用复选框更新数据库

php - 遇到几个问题 kohana 框架 : routing and running on ubuntu 12. 04

php - 跟踪当前连接设备上的用户

php - 用于 SQL 注入(inject)性能的最佳函数

php - 在产品销售时将自定义文本标签添加到价格

mysql - codeigniter Mysql加入查询结果

mysql - 查询用户未访问的页面