0

このコードは、列名のリストを出力します。しかし、JSmithUserNameを使用しているユーザーのために、テーブルに格納されている情報を出力することを期待しています。LoginName

 $loginname = "JSmith";
 $stmt = $dbh->prepare("SELECT * FROM UserName WHERE LoginName=:login_name");
 $stmt->bindValue(":login_name", $login_name, PDO::PARAM_STR);
 $stmt->execute();

echo "<table><tr>";
$result = $stmt->fetch(PDO::FETCH_ASSOC);
 print_r($result);
foreach ($result as $key => $val){
    echo "<th>" . $key . "</th>";   
}
echo "</tr>";
echo "</table>";

なぜこれはユーザー名の行を返さないのですか?見てみるとecho gettype($result)、それらは文字列と整数であることがわかります。返される配列の各部分自体が配列であるのとは異なります。簡単なことだと思いますが、どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

1

値ではなく、キーを印刷しています。キーは列名であり、値は対応する列値です。

print_r($result)は、期待する情報を含む配列を返すことを示してい$stmt->fetch()ますが、対応するHTMLはそれを反映していません。

http://php.net/manual/en/pdostatement.fetch.php#example-1018

修正しましょう。

$result = $stmt->fetch(PDO::FETCH_ASSOC);
print_r($result);
foreach ($result as $key => $val){
    echo "<th>" . $key . "</th>";
    echo "<td>" . $val . "</td>";
}
echo "</tr>";
echo "</table>";
于 2013-02-05T03:49:33.527 に答える