我在数组中找不到这个额外的行

I can't find out this extra line in array

我不知道我的数组是什么意思。

我的代码是

   try {

  $conn=new PDO("mysql:host=localhost;dbname=moviesite","root","");
  $conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

  $stmt=$conn->prepare("SELECT movie_name,movie_year,movie_type,movie_leadactor,movie_director
                          FROM movie
                            ORDER BY movie_name,movie_year");
  $stmt->execute();
  $result=$stmt->fetchAll();
  foreach ($result as  $row) {
    var_dump($row);
  }
} catch (PDOException $e) {
echo $e->getmessage();
}


**And my result**

我的问题是

0 => string 'Bruce Almighty' (length=14)
1 => string '2003' (length=4)
.
.
.

我只请求 movie_namemovie_yearmovie_typemovie_leadactormovie_director

但它显示额外的行,例如 0 => string 'Bruce Almighty' (length=14)

转储为您提供有关数组中每个变量的信息。因此,字符的类型和数量。如果你只是想输出它们。

foreach ($result as  $row) {
    echo $row['movie_name'].','.  $row['movie_year'].','.$row['movie_type'].','.$row['movie_leadactor'].','.$row['movie_director'].'<br />';
}

更改显示子项的限制

; with sane limits
xdebug.var_display_max_depth = 16
xdebug.var_display_max_children = 400
xdebug.var_display_max_data = 2048 


; with no limits
; (maximum nesting is 1023)
xdebug.var_display_max_depth = -1 
xdebug.var_display_max_children = -1
xdebug.var_display_max_data = -1 

也可以在编码方面完成以下操作

ini_set('xdebug.var_display_max_depth', 16);
ini_set('xdebug.var_display_max_children', 400);
ini_set('xdebug.var_display_max_data', 2048);

fetchAll()的第一个参数是fetch_style其中

Controls the contents of the returned array as documented in PDOStatement::fetch(). Defaults to value of PDO::ATTR_DEFAULT_FETCH_MODE (which defaults to PDO::FETCH_BOTH)

这就是为什么当您 var_dump($row); 时,您的 array.You 中同时获得了 numericassociative 格式数据,只需要在 $stmt->setFetchMode(PDO::FETCH_ASSOC); 之前设置 $stmt->execute(); 或使用 $result = $stmt->fetchAll(PDO::FETCH_ASSOC) 作为关联索引。

try {

  $conn = new PDO("mysql:host=localhost;dbname=moviesite","root","");
  $conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

  $stmt = $conn->prepare("SELECT movie_name,movie_year,movie_type,movie_leadactor,movie_director
                          FROM movie
                            ORDER BY movie_name,movie_year");
   //ADD BELOW LINE
  $stmt->setFetchMode(PDO::FETCH_ASSOC);
  $stmt->execute();

  //OR REPLACE BELOW LINE LIKE $result=$stmt->fetchAll(PDO::FETCH_ASSOC);
  $result = $stmt->fetchAll(); 
  foreach ($result as  $row) {
    var_dump($row);
  }
} catch (PDOException $e) {
echo $e->getmessage();
}