0

好的,这可能会让人感到困惑,因为我还没有完全弄清楚如何完美地解释这一点,但我只会展示代码来比我用文字更好地解释。

基本思想:我试图从查询中收集所有相关数据,将其分配给 PHP 变量,然后通过 json.encode 返回它,以便在需要使用 Javascript 的网站上使用。

所以这是我想要做的一个例子:

$stmt = $pdo->prepare("SELECT * FROM users WHERE uid= ?");
try {
    $stmt->execute(array($uid));
} catch (PDOException $e) {
    echo $e -> getMessage();  exit;
}

if(!$stmt->rowcount()){
    return false; exit;
}

$data = $stmt->fetchAll(PDO::FETCH_ASSOC); 

所以我此时显示 $data 并得到以下结果:

Array ( 
  [0] => Array (
            [uid] => 1 
            [pass] => *****
            [show_name] => Dave
            [email] => test@test.com
  ) )

这是我期望发生的:)

接下来我想将更多查询结果添加到“$data”。像这样:

    $stmt = $pdo->prepare("SELECT * FROM databank WHERE uid=?");
    try{
        $stmt->execute(array($uid));
    } catch (PDOException $e){
        echo $e -> getMessage();  exit;
    }   
$data .= $stmt->fetchAll(PDO::FETCH_ASSOC);

这就是它出错的地方......当我此时 echo/print_r $data 结果是:

 ArrayArray

有人可以解释为什么会这样吗?以及我如何解决它:)

感谢您的时间!

4

1 回答 1

4

您将每个结果连接到 $data 就好像结果是字符串一样,但它们是数组;当强制将数组表示为字符串时,PHP 会生成“数组”,这不是您想要的。

在你的第一行之前,做

 $data = array();

代替你的最后一行,做

 $data[] = $stmt->fetchAll(PDO::FETCH_ASSOC)

你应该得到

Array ( 
  [0] => Array (
            [uid] => 1 
            [pass] => *****
            [show_name] => Dave
            [email] => test@test.com
  ),
  [1] => Array (
            [uid] => 2
            [pass] => *****
            [show_name] => Joe
            [email] => test@test.com
  ),
  [...]
)

在 $ 数据中。

希望这可以帮助!

于 2012-10-02T04:17:48.863 回答