Php PDO Mysql更新没有结果

时间:2014-10-06 09:58:35

标签: php mysql pdo

我有一个mysql数据库表currency_exchange,其中包含currency,xrate和time列。

我有一个json货币Feed,它提供的货币汇率为:

" AED":3.67266," AFN":57.1294等。

我需要更新数据库中的值。我的php代码如下:

$phpArray = json_decode($jsonData, true);
$extime =  $phpArray['timestamp'];
$rates = $phpArray['rates'];
include_once 'connstring.inc.php';
$uptime = date("m-d-Y H:i:s"); 
if (isset($rates) && !empty($rates) )//if data set and not empty
{
  $conn->beginTransaction();
  $stmt = $conn->prepare("UPDATE `currency_exchange` set `currency` = :currency,  `xrate` = :exchangerate,`time` = :time");
  try
  { 
    foreach($rates as $key => $value) 
    {
      $stmt->execute(array(':currency' => $key, ':exchangerate' => $value, ':time' => $uptime));
    }    
    $conn->commit(); 
  }//end try
  catch(PDOException $e)
  {
    $conn->rollBack();     
  }    
}//end if    

目前我的桌子是空的。我需要有一个if空插入其他更新代码。怎么可能。

请求帮助。提前谢谢。

更新

在currency_exchange表中检查$ rowcount。 if($ rowcount> 0)更新它,否则插入。解决了.. ..

1 个答案:

答案 0 :(得分:0)

正如您所提到的,您的表是空的,这是您第一次执行“INSERT”查询。 “更新”查询仅用于更新现有数据。  你必须替换

$stmt = $conn->prepare("UPDATE `currency_exchange` set `currency` = :currency,  `xrate` = :exchangerate,`time` = :time");

$stmt = $conn->prepare("INSERT INTO `currency_exchange` (`currency` ,`xrate`,`time`) VALUES (currency, exchangerate,time");