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

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

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

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

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

Q&A

解決済

3回答

3824閲覧

データベースへの接続がうまくいかない

rura

総合スコア70

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

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

0グッド

0クリップ

投稿2016/08/31 06:03

編集2016/08/31 06:33

###前提・実現したいこと
①客先データベースの登録を作成中だが、接続分で引っかかっており、
登録作業ができない

###発生している問題・エラーメッセージ

Warning: mysql_select_db() expects parameter 2 to be resource, object given in C:\xampp\htdocs\labor\company.php on line
データベースを選択できませんでした。
###該当のソースコード

$link = mysqli_connect("localhost","root","",$dbname); if (!$link) { die('接続失敗です。'.mysql_error()); } //print('<p>officerデータベースを選択しました。</p>'); mysql_select_db('officer', $link); if (!$result) { exit('データベースを選択できませんでした。'); }

$link = mysqli_connect("localhost","root","",$dbname);については
XAMPPをDLして表示されるべきhttp://localhost/phpMyAdmin/index.phpがでないので、
設定してません。また、最近、それをPHPMyAdminで設定したところ、それが開けなくなってしまいましたので、
再DLしてある状態です。
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
php、MYSQL、ATOM

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

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

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

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

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

coco_bauer

2016/08/31 06:22

mysqli_connectの第3引数(パスワード)が空文字列になっていますが、rootにパスワードが設定されていないようなシステムなのですか??
guest

回答3

0

ベストアンサー

mysqli_connect の第4引数でデータベースを指定しているため、mysql_select_db の実行は不要です。
http://php.net/manual/ja/mysqli.construct.php

パラメータ

(中略)
dbname
指定した場合は、 クエリが行われるデフォルトのデータベースとなります。


それ以前に、
mysqliモジュールでDBとの接続を確立しているにも関わらず、以降の処理をmysqlモジュールで実行しようとしているため、このコードはうまく動きません。

使用する関数はmysqliモジュールのものに統一してください。
(mysqlモジュールは非推奨のため、よほど古い PHP または MySQL を使用していない限り、使用しないことをお勧めします)
http://php.net/manual/ja/intro.mysql.php

この拡張モジュールは PHP 5.5.0 で非推奨になり、PHP 7.0.0 で削除されました。 新しくコードを書くときには mysqli や PDO_MySQL を使うべきです。


kunai 様へのコメントに

DBのmyfirstdatabaseテーブルにあるofficerが呼び出しできないようです。

とありますが、

myfirstdatabase -> データベース名 officer -> テーブル名

ではありませんか?

であれば、 mysql(i)_select_db でテーブル名を指定することはできません。
テーブルからデータを取得したい場合は、mysqli_prepare, mysqli_stmt_execute などでSQLを実行してください。
http://php.net/manual/ja/mysqli.prepare.php
http://php.net/manual/ja/mysqli-stmt.execute.php

投稿2016/08/31 06:43

KiyoshiMotoki

総合スコア4791

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

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

rura

2016/08/31 07:01

myfirstdatabase -> データベース名 officer -> テーブル名  はい、そのようなデータベースになっております。
KiyoshiMotoki

2016/08/31 07:22 編集

UmemuraYuka 様 > はい、そのようなデータベースになっております。 では、myfirstdatabase データベースとの接続は正常に確立できているはずです。 ('接続失敗です。' と表示されないため) officer テーブルから何らかのデータを取得したい場合は、回答に記載させていただいた通り、SQLを実行してください。 そのやり方が分からない場合、別途、ご質問を投稿することをお勧めします。 (もちろん、まずはご自身で調べてみてください) 「SQLの実行方法」についての議論はこのご質問の主意から離れてしまうのと、 その方が、より多くの回答を得やすくなると思いますので。
guest

0

officerがないのでは?
$resultに返り値を受け取りましょう。

$result = mysql_select_db('officer', $link); if (!$result) { exit('データベースを選択できませんでした。'); }

投稿2016/08/31 06:10

jm1156

総合スコア866

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

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

0

connectが「mysqli_connect」と、mysqli系を使っており、select_dbは「mysql_select_db」と、mysql系を使っているからではないでしょうか。
それぞれ異なる体系のfunctionですので、mysql_select_dbを使われるのであれば「mysql_connect」を使ってください。

投稿2016/08/31 06:15

kunai

総合スコア5405

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

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

rura

2016/08/31 06:25

どうもありがとうございました。ブラウザに出るerrorは消えました。しかし、 接続できません。 今度はデータベースを選択できませんでした。のままで、DBのmyfirstdatabaseテーブルにあるofficerが呼び出しできないようです。
kunai

2016/08/31 06:29

質問文のソースコードの「mysqli_connect」のところを「mysql_connect」の記述にしただけと言う前提だと、「if (!$result) {」で判定している$resultが未定義ですので、false判定になると思います。 mysql_select_db の結果を$resultに代入してみるか、 if(mysql_select_db 等の形で試してみてください。
rura

2016/08/31 06:43

すいません。ちょっとピンと来ないので、詳しく文法をお願いします
kunai

2016/08/31 06:43

あと、上記の事が原因だとするとすぐに解決するレベルですので許容範囲内ですが。 原則的には、1つの問題が解決した後に別の問題で躓いた場合、同じソースコードを利用していても別の質問を起こされた方が良いかと思います。 この手のサービスは、質問者と回答者だけで完結するものではなく、同様の問題で躓いている方がすぐに解決方法にたどり着ける為という意義もありますので。
kunai

2016/08/31 06:44

$result = mysql_select_db('officer', $link); if (!$result) { とするか、 if (!mysql_select_db('officer', $link)) { とするか、と言う事ですね
rura

2016/08/31 06:46

ありがとうございます。
KiyoshiMotoki

2016/08/31 06:56

横から失礼します。 kunai 様 回答およびコメントを拝見するに mysql系モジュールを使用するよう誘導しているように見受けますが、 これは意図した上でのことでしょうか? mysql系モジュールはPHP 5.5.0 から非推奨です。 例え質問者様が5.5 以前の PHP を使用しているとしても、可能な限り、mysql系モジュールは使用しない方が無難だと、私は考えます。
kunai

2016/08/31 07:16

KiyoshiMotokiさん 失礼しました。そこまで考えが及ばず、当初の問題の争点がmysql_select_dbだった為「そちらを使う場合は」としてコメントを進めておりました。 通知から自分のコメントしか見ておりませんでしたが、他の回答でそのあたりについて言及もあるようですので、その点についてはそちらの回答を質問者さんが参照して下さることを期待します。
KiyoshiMotoki

2016/08/31 07:22

kunai 様 返信ありがとうございます。 了解しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問