###前提・実現したい事
PHP7.4でPDO接続を用いてMySQLデータベースにINSERTしたいのですが、データが追加されません。
原因を究明しようとはしたのですが、エラーなどが特に表示されずに原因が分かりませんでした。
###該当のソースコード
$err = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_EMULATE_PREPARES => false]; // エラー表示設定:通知系以外全て表示 error_reporting(E_ALL & ~E_NOTICE); try { //DBへ接続 $dbh = new PDO('mysql:'.DB_NAME.';'.DB_HOST, DB_USER, DB_PASSWORD, $err); if($dbh == null){ print('接続に失敗しました。'); } else{ print('接続しました。'); } $a1 = 'abcdef'; $a2 = 'ghijklm'; $a3 = 'nopqrst'; //SQL作成 $sql = "INSERT INTO sample.data (one, two, three) VALUES ('".$a1."', '".$a2."','".$a3."');"; // SQL実行) $res = $dbh->query($sql); print_r($res); } catch(PDOException $e){ print('ERROR:'.$e->getMessage()); exit; }
###実行結果(print_rの出力内容)
接続しました。PDOStatement Object ( [queryString] => INSERT INTO sample.data (one, two, three) VALUES ('abcdef', 'ghijklm','nopqrst'); )
###試したこと
まずデータベース接続の段階でエラーが出るかif文に確認してみたのですが、「接続しました。」と表示されたので、接続は成功していると思います。
次に$dbh->query($sql)の内容を表示させてみて得られた結果(INSERT INTO sample.data (one, two, three)
VALUES ('abcdef', 'ghijklm','nopqrst');)をmysqlにログインしてコピペすると、insertされました。
###補足情報
PHP7.4
MySQL8.0
FreeBSD12.1
###追記
PHPを実行している側のIPアドレスが192.168.1.100、接続先(接続しようとしているMySQLサーバ)のIPアドレスが192.168.1.101と仮定します。
echo 'mysql:'.DB_NAME.';'.DB_HOST;の結果は
mysql:sample;192.168.1.101でした。
改めて確認してみた結果、192.168.1.100にも同じ名前のsampleというデータベースの中にdataというテーブルが存在したのですが、今までのINSERTはどうやらこちら側にされていたようです。192.168.1.101側のデータベースには相変わらずINSERTされていません。
回答2件
あなたの回答
tips
プレビュー