【问题标题】:Get one line result from MySQL从 MySQL 获取一行结果
【发布时间】:2010-12-19 18:21:47
【问题描述】:

我正在尝试用 PHP 构建一个简单的数据库类,并且我正在使用 MySQL。

现在我卡住了,我不知道如何从数据库中显示一行结果。我已经解决了如何从数据库中获取多行但现在我试图只显示一个,如用户名、电子邮件、级别、reg_date。

我的代码:

class Database {

  public $mysql;

  function __construct()
  {
    $this->mysql = new mysqli(host, user, password, db) or die('There was a problem connecting to the db');
  }

  function multiLine($sql)
  {
    $this->mysql->query("SET NAMES 'utf8'");
    $this->mysql->query("SET CHARACTER SET 'utf8'");

    if(($result = $this->mysql->query($sql)) != NULL) {
      $x = array();
      while($row = $result->fetch_array()) {
        $x[] = $row;
      }
      return $x;
    }
    else {
      echo $this->mysql->error;
    }
  }


  function singleLine($sql)
  {

      $one = array();
      if(($one = $this->mysql->query($sql)) != NULL)
      {
          $one = $result->fetch_array(); // Error here
      }

      return $one;
  }

  function __destruct() {
    // close out the database connection;
    $this->mysql->close();
  }
}

我的函数 multiLine 工作,我像这样使用它:

$db = new Database();
$sql = 'SELECT * FROM users ORDER BY id DESC';

$response = $db->multiLine($sql);

<?php foreach($response as $r) : ?>
<p>ID: <?php echo $r['id']; ?></p>
<p>Username: <?php echo $r['username']; ?></p>
<?php endforeach; ?>

那么有人可以给我一个提示如何解决这个问题吗?或者也许有人有一个链接到一个很棒的用 PHP 制作数据库类的教程。

【问题讨论】:

    标签: php database class


    【解决方案1】:
    if(($one = $this->mysql->query($sql)) != NULL)
    

    应该是

    if(($result = $this->mysql->query($sql)) != NULL)
    

    【讨论】:

      【解决方案2】:

      我不明白是什么问题,为什么你只是不添加LIMIT 1 来查询

      【讨论】:

        【解决方案3】:

        要将结果强制为一行,查询末尾的LIMIT 1 将执行此操作。

        如果您要检查结果是否恰好是一行,在将其发送到 multiLine() 或 singleLine() 之前,mysql_num_rows 会告诉您查询中有多少行。

        不过,我不确定您为什么要以不同的方式处理它们,因为调用它的代码必须检查它返回的是数组还是对象。回报应该是一致的。

        【讨论】:

          【解决方案4】:

          从 MySQL 获取一行结果:

          $val = fetch_one_record("SELECT some_field FROM some_table LIMIT 1);
          
          function fetch_one_record($sql) {
              $conn = db_connect();
              $result = array_shift($conn->query($sql)->fetch_assoc());
              $conn->close();
              return $result;
          }
          

          【讨论】:

            猜你喜欢
            • 2015-01-21
            • 2021-01-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-09-30
            相关资源
            最近更新 更多