0

我对 PHP 很陌生,但我是一个经验丰富的 Java 程序员。

我知道我想用我的代码实现什么,即

while(result.Hasnext()){ array.add(result.next)}

现在我有以下php代码:

$myArr = array();
$query = 'SELECT message from shoutbox';
$result = $this->db->query($query);

我如何将我得到的所有数据添加到 php 中的数组中?我知道这很简单,但我一直在到处寻找例子,只是没有找到一个。

我完整的数据库课程

<?php
class database{
    private $server = "db9.meebox.net";
    private $usedb = "marcrasm_website";
    private $user = "******";
    private $pass = "******";
    private $db;

    public function __construct() {
        $this->db = new mysqli($this->server, $this->user, $this->pass, $this->usedb);
        if ($this->db->connect_errno) {
            printf('Error: Connect failed: %s', $mysqli->connect_error);
            exit();
        }
    }
    public function sendMessage($message){
        $currentTime = $_SERVER['REQUEST_TIME'];
        $date = date('Y/m/d H:i:s');
        $query = "INSERT INTO shoutbox VALUES ('NULL','$message','$date')";
        $this->db->query($query);
    }
    public function loadMesssages(){
        $query = 'SELECT message from shoutbox ORDER BY created DESC';
        $result = $this->db->query($query);
        if (mysql_num_rows($result) == 0){
            //no results
        }else{
            // returned at least one result.
            while($row = mysql_fetch_assoc($result)){
                $myArr [] = $row;
            }
        }
        return $myArr;
    }
}
    ?>
4

5 回答 5

2

我假设您正在使用PDO. 最简单的解决方案是:

$result = $this->db->query($query);
$array = $result->fetchAll();

顺便说一句,你怎么能不能使用文档来实现呢?

更新:

编辑问题后,我发现您没有使用PDO. 但是,对您的代码进行编辑以仅提供一个答案来帮助您(没有为您提供整个解决方案)将是太多了。你可以的!;)

于 2013-06-05T23:29:28.513 回答
1
if (mysql_num_rows($result) == 0){   
    //no results
}else{
    // returned at least one result.
    while($row = mysql_fetch_assoc($result)){
        $myArr [] = $row;
    }
}
于 2013-06-05T23:30:52.250 回答
1

new mysqli(..) 然后 mysql_... 你使用了错误的库。如果您使用 mysqli 使用它来获取数据

while ($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) {
  $myArr[] = $row;
}
于 2013-06-06T00:12:04.860 回答
0

你是如何查询数据库的?

但基本上你不能像这样添加到 PHP 中的数组中: $some_array[] = "some value";

或设置特定键:

$some_array[3] = "another_value";

如果您的查询返回一个数组,您可以简单地将返回分配给您的数组(您$return现在是一个数组)

但是,这在很大程度上取决于您的返回类型db->query()

总结一下:

您可以将单个项目添加到数组中,也可以将变量分配给另一个数组。还有一些函数,比如array_mergewhich 组合成数组。看看一些与数组相关的 PHP 手册页。

于 2013-06-05T23:33:26.197 回答
-1

它可以像这样简单:

while ( $row = mysql_fetch_assoc( $result ) ) {
    $myArr[] = $row;
}

如果查询未选择任何行,则循环条件在第一次运行时为假,因此数组将保持为空。

于 2013-06-05T23:35:18.520 回答