【问题标题】:translation mysql_fetch_array to PDO::FETCH_NUM将 mysql_fetch_array 翻译成 PDO::FETCH_NUM
【发布时间】:2014-05-10 00:23:32
【问题描述】:

这两个代码在PDO中的等价物是什么

第一:

  $row=mysql_fetch_array($query);

秒:

 while($row=mysql_fetch_array($query)){
   $data[]=$row;
 }

我在下面使用了这些代码,但我猜它们并不完全相同,因为其余代码不起作用。

$row = $query->fetch(PDO::FETCH_NUM);

 $data[] = $query->fetch(PDO::FETCH_ASSOC);

【问题讨论】:

    标签: php mysql pdo


    【解决方案1】:

    以下是对应关系:

    • mysql_fetch_array = fetch(PDO::FETCH_BOTH) - 行是具有数字索引和命名索引的数组。
    • mysql_fetch_assoc = fetch(PDO::FETCH_ASSOC) - 行是具有命名索引的数组。
    • mysql_fetch_row = fetch(PDO::FETCH_NUM) - 行是具有数字索引的数组。
    • mysql_fetch_object = fetch(PDO::FETCH_OBJ)fetch(PDO::FETCH_CLASS) 取决于您是否为 mysql_fetch_object 指定可选的 className 参数。这些行是对象,可以是指定的类或stdClass

    while 循环相当于:

    $data = $query->fetchAll(PDO::FETCH_BOTH)
    

    【讨论】:

      【解决方案2】:

      您应该能够通过以下方式在数组中获取查询的数据:

      $data = $query->fetch(PDO::FETCH_BOTH);
      

      如果这不起作用,您的 PDO 连接可能设置不正确或您的查询没有运行。您可以尝试使用以下方法对查询进行故障排除:

      try {
          $query->execute();
      } catch (PDOException $e) {
          echo 'Query failed: ' . $e->getMessage();
      }
      

      【讨论】:

      • 感谢您的回答。我知道这个代码是有效的。但是,我正在寻找一个脚本,当我用旧代码更改时,它的工作方式相同。因为其余的代码真的很长,如果我更改很多,我将不得不全部更改
      • 所以您确信查询执行良好?
      • @RubyMewMew 应该是PDO::FETCH_BOTH 才能匹配原码。
      • 旁注:在开发期间(仅限),最好在打开连接后立即使用$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);。仅仅做一个catch(PDOException $e) 是不够的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-13
      • 1970-01-01
      • 2018-08-18
      • 2010-11-07
      • 1970-01-01
      • 2015-09-22
      相关资源
      最近更新 更多