所以我一直在研究这个问题,但我似乎无法弄清楚如何让它发挥作用。
如果产品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')");
}
/ 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')");
}
答案 0 :(得分:4)
乍一看,这一行:
if ($count = $id){
总是等于true,所以请尝试:
if ($count == $id){
但是,我认为count将始终返回1(如果没有找到记录则返回0)并且不会匹配csv中的id。
而是使用mysql_fetch_assoc从数据库中提取记录,并将数据库中的id字段与csv进行比较
答案 1 :(得分:1)
除了休·唐纳所说的,你还面临另一个问题。
您将mysql_num_rows
返回的值分配给 $ count ,这似乎不是您想要的值。
您将 $ 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
}