質問: new PDO($dsn, $db['user'], $db['pass'], array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION)); arrayがここにある意味がわかりません。 $stmt->execute(array($username, password_hash($password, PASSWORD_DEFAULT))); これもなぜここにarrayがあるのかわかりません。 ### 試したこと ネットで調べました。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
回答: new PDOのところのarrayは、接続時のオプション指定だね。 PHP: PDO::\_\_construct \- Manual array $options だから、array型で与えているわけで。 オプションで与えるフラグが一つでもarray型でないといけない。 execute()のところのarrayも、クエリー実行時入力パラメータがarray型が要求されるから。 PHP: PDOStatement::execute \- Manual array $input_parameters だから、array型で与えているわけで。 prepare()して、bindValue()しまくってから、execute()する方法もあるけど、 bindValue()しまくらずにPrepare()ののちexecute()するときのパラメータの与え方が array $input_parameters を指定することだったりする。 prepare()するところでSQL文の途中に「?」が書いてあって、 execute()で与えるarray()によって「?」出現順に合わせてパラメータが適用される形。