首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选中以插入或更新表

问选中以插入或更新表
EN

Stack Overflow用户
提问于 2012-09-20 23:48:10
回答 2查看 253关注 0票数 1

请看下面的代码,它检查表中是否存在数据,如果不存在,则插入数据或更新表。

正如你所看到的,它看起来有点凌乱--有没有改进代码逻辑或其他更小的东西?我有几个表需要做同样的事情。

代码语言:javascript
复制
foreach ($sheet as $data) {
    // Get Phone ID
    $dataPhoneID = mysql_escape_string($data['handset']['phone_id']);

    if (isset($stocks[$dataPhoneID])) {
        $stockPhone = $stocks[$dataPhoneID ];
        $phoneName = mysql_escape_string($stockPhone['description']);
        $stock = mysql_escape_string($stockPhone['stock']);

        $SQL = "SELECT * FROM phone_affiliate WHERE affiliate_id = 1 AND affiliate_phone_id = '$dataPhoneID'";
        $q = mysql_query($SQL);
        if (mysql_num_rows($q) == 0) {
            $SQLInsert = "INSERT INTO phone (name) VALUE('$phoneName')";
            if (mysql_query($SQLInsert)) {
                $phone_id = mysql_insert_id();
                $SQLInsert = "INSERT INTO phone_affiliate (phone_id, affiliate_id, affiliate_phone_id, stock) ";
                $SQLInsert .= "VALUE('$phone_id', '1', '$dataPhoneID', '$stock')";
                mysql_query($SQLInsert) or die(mysql_error());
            }
        } else {
            $row = mysql_fetch_assoc($q);
            $phone_id = $row['phone_id'];
            $SQLUpdate = "UPDATE phone_affiliate set stock = '$stock' WHERE affiliate_id = 1 AND phone_id = $phone_id";
             mysql_query($SQLUpdate) or die(mysql_error());
        }

      // Similar code block above for other tables.
    }
}

注:我知道PDO,但我没有时间在现有系统上更换它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-20 23:49:58

使用mysql的REPLACE INTO或INSERT... ON DUPLICATE KEY UPDATE。例如:

代码语言:javascript
复制
foreach ($sheet as $data) {
    // Get Phone ID
    $dataPhoneID = mysql_escape_string($data['handset']['phone_id']);

    if (isset($stocks[$dataPhoneID])) {
        $stockPhone = $stocks[$dataPhoneID ];
        $phoneName = mysql_escape_string($stockPhone['description']);
        $stock = mysql_escape_string($stockPhone['stock']);

        $SQLInsert = "INSERT INTO phone_affiliate (affiliate_id, affiliate_phone_id, stock) ";
        $SQLInsert .= "VALUES ('1', '$dataPhoneID', '$stock') ";
        $SQLInsert .= "ON DUPLICATE KEY UPDATE stock = '$stock'";
        mysql_query($SQLInsert);
        if (mysql_insert_id()) {
            $SQLInsert = "INSERT INTO phone (name) VALUE('$phoneName')";
            mysql_query($SQLInsert);
            $phone_id = mysql_insert_id();
            $SQLUpdate = "UPDATE phone_affiliate set phone_id = $phone_id WHERE affiliate_id = 1 AND affiliate_phone_id = $dataPhoneID_id";
        }
    }
}
票数 5
EN

Stack Overflow用户

发布于 2012-09-20 23:51:09

也可以使用INSERT IGNORE结构

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12516261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档