【问题标题】:Why would print_r ($row); only be returning a number 1?为什么会 print_r ($row);只返回一个数字 1?
【发布时间】:2009-03-15 23:55:42
【问题描述】:

我正在尝试学习 PHP5,但遇到了一些问题。我正在使用准备好的语句并尝试运行以下代码:

<?php
require_once 'includes/config.php';

$conn = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME) or 
die('There was a problem connecting to the database.');

$query = "SELECT * FROM user_table";

    if($stmt = $conn->prepare($query)) {
        $stmt->execute();

        while ($row = $stmt->fetch()) {
            print_r ($row);
        }

    }

?>

我有 2 行它应该返回每行包含一个 id、login_name、login_password 和一个 login_level。

当语句运行时,它只打印以下内容:

11

任何帮助将不胜感激。

【问题讨论】:

    标签: php mysql mysqli


    【解决方案1】:

    fetch() 方法返回TRUEFALSENULL,具体取决于它是否成功获取数据。它不返回数组中的数据。相反,它将结果放在由bind_result() 方法绑定的变量中。

    【讨论】:

      【解决方案2】:

      它返回 1,因为 1 在 PHP 中为 TRUE。

      你应该做的是用[bind_result][1]方法绑定一个变量然后做:

      while ($stmt->fetch()) {
          printf ("%s\n", $variable);
      }
      

      bind result documentation page. 上有一个很好的例子

      【讨论】:

        【解决方案3】:

        为了能够以这种方式实现,您首先需要像这样绑定结果变量:

        $stmt->execute();
        
        // bind the result variables in order 
        $stmt->bind_result($id, $login_name, $login_password, $login_level);
        
        // then get results
        while ($stmt->fetch()) {
            var_dump($id, $login_name, $login_password, $login_level);
        }
        

        【讨论】:

          猜你喜欢
          • 2010-12-19
          • 1970-01-01
          • 2014-06-04
          • 2019-12-21
          • 2014-10-23
          • 1970-01-01
          • 1970-01-01
          • 2019-03-08
          • 2022-08-24
          相关资源
          最近更新 更多