2013-10-29 151 views
0

我附上了我的PHP代码。它会正确计算累积值并正确构建SQL语句(由echo $sql;进行测试)。但是,MySQL的instert语句不成功。有任何想法吗?MySQL插入语句不会插入?

<?php 
ini_set('memory_limit', '500M'); 
set_time_limit(1800); 
$dbh = new mysqli('localhost','user','password','database') or die(mysql_error()); 
$query = "SELECT * FROM table1 ORDER BY id, date"; 
$del = "DELETE FROM table2"; 
$dbh->query($del); 
if ($dbh->multi_query($query)){ 
    if ($result = $dbh->store_result()){ 
     $id = 0; 
     while ($row = $result->fetch_row()){ 
      $date = $row[0]; 
      $cvalue = $row[2]; 
      $id = $row[1]; 
      $cumulative = 0; 
      // Pull most recent cumulative value 
      $sql_recent = "SELECT * FROM table2 WHERE id = $id ORDER BY date DESC LIMIT 1"; 
      if ($dbh->multi_query($sql_recent)){ 
       if ($result_recent = $dbh->store_result()){ 
        while ($row_recent = $result_recent->fetch_row()){ 
         if($row_recent[0] != $date){ 
          $cumulative = $row_recent[2]; 
         } 
        } 
       } 
      } 
      $cumulative += $cvalue; 
      $sql = 'INSERT INTO table2 (id, date, cumulative) VALUES ('; 
      $sql .= "'".$row[1]."',"; 
      $sql .= "'".$date."',"; 
      $sql .= "'".$cumulative."',"; 
      $sql .= ')'; 
      $dbh->query($sql); 
      echo $sql; 
     } 
    } 
} 
$dbh->close(); 
?> 
+1

你的数据库结构如何,哪些错误会引发你,等等... – vivoconunxino

+0

你能解决你的问题吗? –

+0

是的!你的解决方案工作,这是一个简单的错误,我没有看到。 – user2932733

回答

5

你的最后一个值后多余的逗号:

$sql .= "'".$cumulative."',"; 

尝试移除:

$sql .= "'".$cumulative."'"; 
+0

这个$ sql。=')'需要是$ sql。='),'?该语句将需要例如INSERT INTO(c1,c2)VALUES('1','2'),('3','4'); –

+0

哦,我只是意识到它只有一排。无视我的评论。 –

1

后$累计逗号会使语法错误。