将PHP数组作为MYSQL列插入

时间:2015-08-18 13:04:45

标签: php mysql arrays loops

我试图将两个数组中的动态数组值作为列添加到mysql表中,一次添加几行。我为此创建了一个循环。
当我运行它时会产生错误,说明我在MYSQL语法中有错误。当我尝试运行直接在phpMyAdmin中生成的查询语句时,它运行正常。因此语法不应成为问题。谢谢你的帮助。

function addSystemDataTanks ($db, $tankNamesArray, $tankVolumesArray)
{

  global $tankNamesArray;
  global $tankVolumesArray;
  global $noOfTanks;

  $statement = "replace into tanks (TANK_NAME, TANK_VOLUME) ";
  $statement .= "values ";

  for ($i = 0; $i < $noOfTanks; $i++) {

  $statement.= "('".$tankNamesArray[$i]."', '".$tankVolumesArray[$i]."'), ";
  }
  $statement.= rtrim($statement, ',');

  $result = mysqli_query($db, $statement);


  if ($result)
  {
    return true;
  }else{
    $errno = mysqli_errno($db);
    echo "{h4}MySQL Error No: ".mysqli_errno($db)."</h4>";
      echo "{h4}MySQL Error: ".mysqli_error($db)."</h4>";
      echo "{h4}SQL: ".$statement."</h4>";
      echo "{h4}MySQL Affected Rows: ".mysqli_affected_rows($db)."</h4>";
  }
  return 'NotAdded';
}

1 个答案:

答案 0 :(得分:0)

到目前为止我看到两个问题:

  • 首先:您在哪里为$noOfTanks分配值?你的for循环取决于该值,但是,我没有看到它被分配,这意味着它当前导​​致NULL,因此你的循环不会迭代。

  • 第二:此行$statement .= rtrim($statement, ',');与原始$statement变量连接,最终以此结束:

    'REPLACE INTO tanks (TANK_NAME, TANK_VOLUME) values REPLACE INTO tanks (TANK_NAME, TANK_VOLUME) values '
    

    我假设您想在trim之后重新分配,在这种情况下执行此操作:

    $statement = rtrim($statement, ',');