PHPにてPDOでMySQLに接続して、複数のSQLを実行する場合、どのようにコードを書いたらいいのでしょうか?
下記に3通りの方法を考えてみましたが、どれが正しい方法ですか?
それともすべて望ましくない書き方でしょうか?
方法1
$dsn = 'mysql:host=localhost;dbname=db;charset=utf8'; $user = 'user'; $sql1 = "SELECT * FROM table1 WHERE name = ?"; $sql2 = "SELECT * FROM table2 WHERE name = ?"; $value1 = "佐藤"; $value2 = "鈴木"; $db = new PDO($this -> dsn, $this -> user); $db -> setAttribute(PDO::ATTR_EMULATE_PREPARES,false); $stmt = $db -> prepare($sql1); $stmt -> bindValue(1, $value1, PDO::PARAM_STR); $stmt = $db -> prepare($sql2); $stmt -> bindValue(1, $value2, PDO::PARAM_STR); $stmt -> execute();
方法2
$dsn = 'mysql:host=localhost;dbname=db;charset=utf8'; $user = 'user'; $sql1 = "SELECT * FROM table1 WHERE name = ?"; $sql2 = "SELECT * FROM table2 WHERE name = ?"; $value1 = "佐藤"; $value2 = "鈴木"; $db = new PDO($this -> dsn, $this -> user); $db -> setAttribute(PDO::ATTR_EMULATE_PREPARES,false); $stmt1 = $db -> prepare($sql1); $stmt1 -> bindValue(1, $value1, PDO::PARAM_STR); $stmt1 -> execute(); $stmt2 = $db -> prepare($sql2); $stmt2 -> bindValue(1, $value2, PDO::PARAM_STR); $stmt2 -> execute();
方法3
$dsn = 'mysql:host=localhost;dbname=db;charset=utf8'; $user = 'user'; $sql1 = "SELECT * FROM table1 WHERE name = ?"; $sql2 = "SELECT * FROM table2 WHERE name = ?"; $value1 = "佐藤"; $value2 = "鈴木"; $db1 = new PDO($this -> dsn, $this -> user); $db1 -> setAttribute(PDO::ATTR_EMULATE_PREPARES,false); $stmt1 = $db1 -> prepare($sql1); $stmt1 -> bindValue(1, $value1, PDO::PARAM_STR); $stmt1 -> execute(); $db2 = new PDO($this -> dsn, $this -> user); $db2 -> setAttribute(PDO::ATTR_EMULATE_PREPARES,false); $stmt2 = $db2 -> prepare($sql2); $stmt2 -> bindValue(1, $value2, PDO::PARAM_STR); $stmt2 -> execute();

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。