0


所以我已经为此工作了一段时间,但我似乎无法弄清楚如何让它工作。

如果产品 id 存在,我想更新数据库中产品的价格,如果不存在,我希望它插入新的 id 和价格。

使用下面的代码更新数据库,但是如果 id 不存在,它不会插入任何内容。

关于出了什么问题的任何线索?

感谢
吉姆

编辑

这对我有用:

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

/编辑

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

2 回答 2

4

乍一看,这一行:

 if ($count = $id){

将始终等同于 true,因此请尝试:

 if ($count == $id){

但是,我认为 count 将始终返回 1(如果未找到记录,则返回零)并且永远不会匹配 csv 中的 id。

而是使用 mysql_fetch_assoc 从数据库中提取记录,并将数据库中的 id 字段与 csv 中的字段进行比较

于 2013-06-20T11:12:45.260 回答
1

除了休·唐纳所说的,你还面临另一个问题。

您正在为$count分配返回的值,该值mysql_num_rows似乎不是您想要的值。

您正在将$count$id进行比较以了解它们是否匹配。如果我正确假设您id在数据库中是唯一的,则$count永远不会是 0 或 1。

所以试试这个:

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
}
于 2013-06-20T11:24:10.497 回答