質問: $stmtSkills->execute([$rowData['id']]); ↓ 正)$stmtSkills->execute([$rowData['id']]); 覚えたものを別ページで実践しようとしていたのですが なんだかよく分からなくなってきました。
回答: ``` $sql = "SELECT * FROM user_data WHERE id=1"; $stmt = $pdo->query($sql); $rowData = $stmt->fetch(); var_dump($stmt); ``` 出力結果 ``` class PDOStatement#2 (1) { public $queryString => string(34) "SELECT * FROM user_data WHERE id=1" } ``` PDO::query > > PDO::query — SQL ステートメントを実行し、結果セットを PDOStatement オブジェクトとして返す > > > !イメージ説明 var_dump($stmt); の結果、`class PDOStatement...` と出力されていることに一致する。 つまり、$stmt は PDOStatement オブジェクト である。 オブジェクトは echo で出力できるものではないのでエラーになる。echo で出力できるのは、String や 数値などリテラル値であるため。 PDOStatement::fetch > > PDOStatement::fetch — 結果セットから次の行を取得する > > > !イメージ説明 > > PDOStatementオブジェクトに関連付けられた結果セットから1行取得します。 fetch_style パラメータは、PDO がその行をどの様に返すかを決定します。 > > > fetch_style > > > 次のレコードを呼び出し元に返す方法を制御します。 この値は、PDO::FETCH_* 定数のどれかで、 デフォルトは PDO::ATTR_DEFAULT_FETCH_MODE の値 (そのデフォルトは PDO::FETCH_BOTH) です。 > > > 第1引数に何も設定しなけれは、PDO::FETCH_BOTH なので、 > > PDO::FETCH_BOTH (デフォルト): 結果セットに返された際のカラム名と 0 で始まるカラム番号で添字を付けた配列を返します。 > > > $rowData = $stmt->fetch(); fetch は 配列を結果として返すことがわかる。 なので、$rowData には「配列」が代入される。 $rowData は配列だから、$rowData['id'] でアクセス可能である。 var_dump($rowData); であれば、Array... と表示される。 同様に、リファレンスと実際の動きを確認してください。