質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

1141閲覧

PHPでのMYSQL接続につきまして

kenj

総合スコア29

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2018/03/04 12:59

当方かなりの初心者です。
PHPでのMYSQL接続について質問させて頂きます。

参考書を見て(古いものです)PHPでMYSQLに接続をしようと思い、そのまま入力をしましたが
データベースに接続はできたものの、テーブルにデータが挿入されません。
「成功」という文字は表示されるのですが、実際にコマンドで確認してみると
テーブルにデータは挿入されていませんでした。

「mysql_connect」は現在では使用していない?との事だったので、「mysqli」に変更して
入力してみましたが、接続はできるものの、やはりテーブルに挿入できません。
初歩的な事ですみませんが、誤り部分を教えて頂けると助かります。
宜しくお願い致します。

<?php $s=mysqli_connect("localhost","id","") or die("失敗です"); print "成功しました"; mysqli_select_db("db1",$s); mysqli_query("INSERT INTO tb1 VALUES('k777','ぴえっちぴー',20)"); mysqli_close($s); ?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tanat

2018/03/04 13:38

[「成功」という文字は表示されるのですが、実際にコマンドで確認してみると テーブルにデータは挿入されていませんでした。] について、確認した方法と確認結果を質問に追記してください
kenj

2018/03/04 13:42

説明が分かりずらくてすみません。上記のphpファイルをhttp:localhost/○○phpでアクセスしてみると画面上には「成功しました」と表示されるのですが、実際にコマンドプロンプト?(黒い画面のやつです)でtb1を確認してみると、上記の「k777~」のデータが挿入されていませんでした。恐れ入りますが宜しくお願い致します
tanat

2018/03/04 13:50

コマンドプロンプトで実行したコマンドと、その結果をコピーして質問に頂けますか?発生している状況自体がわかりにくいと言う訳ではなく、実際はデータが入っているが確認方法が誤っているという可能性があると思っています。
kenj

2018/03/04 14:04

再三すみません。コマンドは select * from tb1; になります。結果は元々tb1に入っていたデータは表示されましたが、挿入した筈の「k777','ぴえっちぴー',20」は表示されませんでした。
tanat

2018/03/04 14:45

承知しました。確認方法は正しい様に思います。質問文の方に追記して頂くと、他の回答者からも見やすいので修正しておいて頂ければと思います。
tanat

2018/03/04 14:46

select * from tb1; と同様に DESC tb1; を実行して、その結果を質問文に追記して頂けますか?
guest

回答2

0

ベストアンサー

「成功しました」はDB接続やSQL実行の結果の正否を確認することなく単にprintしているからですね。

mysqli_connect()
mysqli_select_db()
mysqli_query()

いずれも失敗した場合はfalseで確認できますので、
「全てOKだった場合のみ”成功しました”と出力する」ようにした方が良いです。

または、「接続成功しました」「登録成功しました」とどのステップまでいったか分かりやすいような文言にするとか。

あとは既に指摘があるようにmysqli_select_db()の引数の指定が逆ですが、その場合、エラーがでるのではないかと思います。
開発中の段階では画面にエラーが表示されるように設定しておいた方が良いでしょう。

また、DB情報に変更が入ることになりますので、なるべくトランザクションを使うようにし、
成功したときはコミット、何か問題があったときにはロールバックできるようにコードを組んだほうがより安全です。

投稿2018/03/05 00:47

編集2018/03/05 00:53
m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kenj

2018/03/05 09:07

返信が遅くなり申し訳ございません。 ご指摘頂いた通り引数の指定を逆にした所解決いたしました。 またエラー表示の変更や他設定についても今後の参考にさせて頂きます。 ご教示ありがとうございました。 また他にてアドバイス頂いた方々も、ありがとうございました。
guest

0

# 誤 : mysqli_select_db("db1",$s); mysqli_select_db($s,"db1");

なんじゃね
コネクションハンドラはすべて最初のはずだし

投稿2018/03/04 21:34

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/03/04 23:13

クエリの発行も間違えてるな
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問