2014-03-29 61 views
-1

我试了一下我的本地服务器上的这个脚本,它工作正常,但它并没有更新我的表记录,并没有返回任何MySQL错误。有人可以帮助我吗?更新mysql不工作

ini_set("allow_url_fopen", 1); 
$connect = mysqli_connect('localhost','Username','Password','Database') 
    or die('Could not connect: ' . mysqli_error($connect)); 
$handle_source = fopen('http://media.jgoodin.com/dropship/jgi-inventory.csv', 'r'); 

//updating regular product 
while (($data = fgetcsv($handle_source, 500, ",")) !== false) 
{ 
    $VendorSKU = $data[0]; 
    $onHand = $data[1]; 

    if ($result = mysqli_query($connect,"SELECT reference 
     FROM ps_product WHERE reference='$VendorSKU'")) 
     { 
      if ($line = mysqli_fetch_assoc($result, MYSQL_ASSOC)) 
      { 
       mysqli_query($connect,"UPDATE ps_product 
        SET quantity='$onHand' 
        WHERE reference='$VendorSKU'");  

       echo "UPDATE ps_product 
        SET quantity='$onHand' 
        WHERE reference='$VendorSKU'","<br>"; 
      } 
      mysqli_free_result($result); 
     } 
} 
fclose($handle_source); 
mysqli_close($connect); 
+0

也许没有行其中'基准=“$ VendorSKU” '。 –

+1

您正在循环播放CSV文件并每次覆盖$ result变量。只使用对应于最后一行的$结果。读取的最后一行可能是空白的。 –

+0

当它找到一个等于我表中的引用的记录(VendorSKU)时,它将发出回显,但它不更新表记录。 – user3476879

回答

0

改变你的更新呼叫:

if (!mysqli_query($connect, 'UPDATE ps_product 
    SET quantity=' . intval($onHand, 10) . ' 
    WHERE LOWER(trim(reference))=\'' . strtolower(trim(mysqli_real_escape_string($connect, $VendorSKU))) . '\'')) 
{ 
    die(mysqli_error($connect)); 
} 

也,你可以仅仅删除检查产品是否存在 - 它是无用的

+0

我删除了检查行并更改了上面的更新调用,但仍然无法正常工作,并且没有错误。 – user3476879

+0

它在本地服务器上正常工作,但在托管时无效。 – user3476879

+0

@ user3476879你为什么认为它不起作用?你如何检查数据库? –