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);

ここで問題が発生します...この時点で $data を echo/print_r すると、結果は次のようになります。

 ArrayArray

なぜこれが起こるのか説明できますか?そして、私はそれをどのように解決してください:)

お時間をいただきありがとうございます!

4

1 に答える 1

4

結果が文字列であるかのように各結果を $data に連結していますが、それらは配列です。配列を文字列として表現することを強制されると、PHP は「Array」を生成しますが、これは望んでいるものではありません。

最初の行の前に、

 $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 に答える