虚位以待(AD)
虚位以待(AD)
首页 > 数据库 > Mysql数据库 > mysql 一次更新(update)多条记录的思路

mysql 一次更新(update)多条记录的思路
类别:Mysql数据库   作者:码皇   来源:互联网   点击:

这篇文章主要介绍了mysql 一次更新(update)多条记录的思路,需要的朋友可以参考下

工作中遇到一个问题:要更新一个数据表。

这个表是我自己创建的,有7个字段,id、name、package等等

创建的时候,因为我把name、package的信息分别存在两个文本文件中,

所以我就用Insert方法,一次性将所有的name插入数据库中。

name全部导入数据库中了,但是我的package没有导入,这时我仍然想用insert的方法插入,但是不行。

这时候应该利用update的方法。一次更新多条信息的思路如下:

    UPDATE table_name SET field_name = CASE other_field WHEN 1 THEN 'value' WHEN 2 THEN 'value' WHEN 3 THEN 'value' END WHERE id IN (1,2,3)测试代码如下:<?php /* *function: insert app's apk ,logo_url, document_title,app_desc,package_name * into talbe atable use database db . */ //connect database catx. $server='localhost';
    $user='root';
    $passwd='root';
    $port='3306';
    $dbname='catx';
    $link=mysql_connect($server,$user,$passwd);
    if (!$link) {
    die('Could not connect: ' . mysql_error());
    }
    else echo "Connected successfullyn";
    mysql_select_db("db",$link);
    //set init variable and start time $st=microtime_float();
    $table="pydot_g";
    $path = "txt";
    $fname_package_name = "package_name.txt";
    // $handle= @fopen($path."/".$fname_package_name, "r");
    $i=1;
    $sql = "UPDATE pydot_g SET package_name = CASE id ";
    $ids="";
    while(($buf[$i]=fgets($handle,512))!==false){
    $sql .= sprintf("WHEN %d THEN '%s' ", $i, $buf[$i]);
    // 拼接SQL语句 $ids .= sprintf("%d,",$i);
    $i++;
    }
    //$ids=implode(',',$ids);
    $ids.=$i;
    $sql .= "END WHERE id IN ($ids)";
    echo $sql;
    mysql_query($sql);
    fclose($handle);
    mysql_close($link);
    //echo the results and total time used $et=microtime_float();
    $t=$et-$st;
    echo "rninsert into talbe ",$table," ",$i,"times;
    rn";
    echo "Total time $t seconds.rn";
    //function calculate time ,return a float number function microtime_float(){
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);
    }
    ?>
相关热词搜索: mysql 一次更新 多条记录