使用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')");
            }

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
}

At first glance, this line:

 if ($count = $id){

will always equate to true, so try:

 if ($count == $id){

However, I think count will always return 1 (or zero if no record found) and wont ever match the id from the csv.

Instead pull the record from the database with mysql_fetch_assoc and compare the id field from the database with from your csv