douwu8060 2013-06-20 11:06
浏览 154
已采纳

使用CSV插入数据和/或更新数据库


So I've been working on this for some time, but i cant seem to figure out how to get it to work.

I want to update the prices of a product in the database if the product id is there, if it's not there i want it to insert the new id and it's prices.

Using the code below it updates the database, however it does not insert anything if the id is not there.

Any clues on what's gone wrong?

With thanks
Jim

EDIT

This works for me:

$count = mysql_num_rows(mysql_query("SELECT id FROM products WHERE id = '$id'"));



            if ($count == 1){

            mysql_query("UPDATE products SET price='$price',ordprice='$ordprice' WHERE id='$id'");

            }elseif($count == 0){

            mysql_query("INSERT INTO products (id,price,ordprice) VALUES ('$id','$price','$ordprice')");
            }

/EDIT

if(isset($_POST['submit']))
    {
        $file = $_FILES['file']['tmp_name'];

        $handle = fopen($file,"r");
        while(($fileop = fgetcsv($handle,10000,";")) !== false)
        {
            $id = $fileop[0];
            $price = $fileop[1];
            $ordprice = $fileop[2];


            $count = mysql_num_rows(mysql_query("SELECT id FROM products WHERE id = '$id'"));



            if ($count = $id){

            mysql_query("UPDATE products SET price='$price',ordprice='$ordprice' WHERE id='$id'");

            }elseif($id != $count){

            mysql_query("INSERT INTO products (id,price,ordprice) VALUES ('$id','$price','$ordprice')");
            }
  • 写回答

2条回答 默认 最新

  • dongzhuo7291 2013-06-20 11:24
    关注

    Besides what Hugh Downer said, you're facing another problem.

    You're assigning to $count the value returned by mysql_num_rows which seems not to be the value you want.

    You're comparing $count to $id to find out if they match. If I assume correctly that your id in the database is unique, $count will never be other than 0 or 1.

    So try this:

    if ($result = mysql_query("SELECT id FROM products WHERE id = $id")) {
        $row = mysql_fetch_array($result);
        $id2 = $row['id'];
    }
    else {
        $id2 = NULL;
    }
    
    if ($id == $id2) {
        // match found, do the insert magic
    }
    else {
        // update here
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?