foreach循环抛出错误


foreach loop throwing an error

我将一个数组从js调用(ajax)传递到php页面,并抛出一个错误。错误所在的代码行是:

     foreach ($array as list($a, $b, $c, $d, $e, $f, $g, $h)) {

这是我第一次尝试pdo。

有人能看到代码出了什么问题吗?

js&ajax调用:

  var outerarray=[];
  var innerarray = [];
  innerarray[0]="1";
  innerarray[1]="2";
  innerarray[2]="3";
  innerarray[3]="4";
  innerarray[4]="5";
  innerarray[5]="6";    
  innerarray[6]="7";
  innerarray[7]="8";
  innerarray[8]="9";
  innerarray[9]="10";
  innerarray[10]="11";  
  innerarray[11]="1";                
  innerarray[12]="13";
  outerarray[0]=innerarray;     
  $.ajax({
    type: "POST",
    url: "ajax/upadateElements.php",        
    data: {outerarray:outerarray},          
    success:function(data){
      alert("data:"+data);                                      
    },
    error: function(data){
       alert("failure");
    }
  });

updateElements.php代码

   $db = new PDO('mysql:host=localhost;dbname=dbname;charset=utf8', username, password, array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));

  $array[]=$_POST['outerarray'];
  foreach ($array as list($a, $b, $c, $d, $e, $f, $g, $h)) {
      $stmt = $db->prepare("SELECT * FROM table WHERE a=:a AND b=:b");
      $stmt->execute(array(':a' => $a, ':b' => $b));
      $row_count = $stmt->rowCount();   
      if($row_count==0){
         $stmt = $db->prepare("INSERT INTO table(a, b, c, d, e, f, g, h) VALUES(:field1,:field2,:field3,:field4,:field5,:field6,:field7,:field8)");                          $stmt->execute(array(':field1' => $a, ':field2' => $b, ':field3' => $c, ':field4' => $d, ':field5' => $e, ':field6' => $f, ':field7' => $g, ':field8' => $h));
         $affected_rows = $stmt->rowCount();                    
       }
       if($affected_rows !=0){          
         echo "success";
       }else{
         echo "fail";
       }                            

SELECT SQL语句中,您正在搜索列pagebref,但在INSERT语句中,尝试用相同的值填充列b。检查您的列名。

另外,请注意仅在PHP>=5.5的情况下在foreach中使用list。对于旧版本,一个替代方案可能是:

foreach ($array as $data) {
    list($a, $b, $c, $d, $e, $f, $g, $h) = $data;
    ...

感谢@Edakos帮我解决了这个问题。问题是您不能在PHP<5.5

我不知道为什么人们会投票否决这个问题。

相关文章: