SQL 連想配列に関して
下記のような形で連想配列を変数に格納しようと考えたのですが、エラーが出てしまいます。
$username = $stmt[0]["username"];
$mail = $stmt[0]["mail"];
これは、そもそも下記のように連想配列を変数に格納することができないのでしょうか。それともルールとしては存在するが、他のコードが間違っているためエラーが出てしまうのでしょうか。
また下記のように連想配列を変数に格納できない場合は、理由も併せてご教示いただけると大変助かります。
例)
<?php
header("X-FRAME-OPTIONS: DENY");
define("HOST", "localhost");
define("DB_NAME", "task02");
define("USER", "root");
define("PASS", "root"); // mampの場合はパスワードをrootに変更します
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET 'utf8'"); // 文字化け対策;
$pdo = new PDO("mysql:host=" . HOST . ";dbname=" . DB_NAME, USER, PASS, $options);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$id = intval($_GET["id"]);
try {
$sql = "select id, username, mail from users where id = :id";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(":id", $id, PDO::PARAM_INT);
$stmt->execute();
} catch (Exception $e) {
echo $e->getMessage();
}
//エラーが出てしまうのはこちらになります
$username = $stmt[0]["username"];
$mail = $stmt[0]["mail"];
?>
1