phpからデータベースを操作しようとしています。
php
1<?php 2 3$dsn = 'mysql:dbname=sample;host=localhost;charset=utf8'; 4$user = 'root'; 5$password = ''; 6 7try{ 8 9 $dbh = new PDO($dsn, $user, $password); 10 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 11 $sql = "INSERT INTO user (id, name, age, email) VALUES (NULL, '田中三郎', '28', 'sample5@sample.com')"; 12 $stmt = $dbh->prepare($sql); 13 $stmt->execute(); 14 echo '接続に成功しました'; 15 16}catch (PDOException $e){ 17 echo($e->getMessage()); 18 die(); 19}
このコードは動きます。接続は成功しました杜ブラウザに表示されます。ですが、
php
1<?php 2 $dsn = 'mysql:dbname = sample; host = localhost; charset = utf8'; 3 $user = 'root'; 4 $password = ''; 5 6 $name = '田中三郎'; 7 $age = '28'; 8 $email = 'sample5@sample.com'; 9 10 try 11 { 12 $dbh = new PDO($dsn, $user, $password); 13 $dbh -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 14 $sql = "INSERT INTO user (id, name, age, email) VALUE (NULL, ':name', ':age', ':email')"; 15 $stmt = $dbh -> prepare($sql); 16 $stmt -> bindValue(':name', $name, PDO::PARAM_STR); 17 $stmt -> bindValue(':age', $age, PDO::PARAM_INT); 18 $stmt -> bindValue(':email', $email, PDO::PARAM_STR); 19 $stmt -> execute(); 20 echo 'finish'; 21 }catch(PDOException $e){ 22 echo ($e -> getMessage()); 23 die(); 24 } 25?> 26
のように変えると、
SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected
と表示されてしまいます。何が原因でこのようなエラーが起こってしまうのでしょうか?どなたか、よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー