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

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

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

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

MySQL

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

mysqli

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

PHP

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

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

Q&A

解決済

1回答

1824閲覧

PHPでのMYSQLクエリ実行失敗について

NowellGartelt

総合スコア9

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

MySQL

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

mysqli

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

PHP

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

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

0グッド

0クリップ

投稿2018/02/12 05:24

PHPでのMYSQLクエリ実行失敗について

PHPでMYSQLに対し、mysqli_query関数でINSERT文を実行していますが、挿入されず困っています。
対処方法、あるいは調査の方向性について教えていただけないでしょうか?

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

PHP7.2でWEBアプリケーションを作っており、mysqli_query関数でINSERT文を実行していますが、DBへ挿入されません。
関数の戻り値はvar_dump()で確認したところ、NULLとなっていました。
通常、mysqli_query関数はTRUE or FALSEだと思っていましたので、理由が分からず困っています。

なお、サーバ上では上記事象が発生していますが、ローカル上では同じPHPファイルで実行しても問題なく挿入されます。
NULLなのでmysqli_connect等で失敗しているのかなとも思いますが...調査が行き詰まっていてお手上げの状態です。

サーバのログには、この挿入後に対象のレコードを取得するユーザ関数で、引数NULLで失敗しているログは出ていますが、それ以外には関係するログは出力されていません。

サーバのOSはCentOS7.4、WebサーバはApache/2.4.6。
サーバ上のMYSQLは5.7.21です。
ローカルはMacでMAMPで動かし、MYSQLは5.6.38です。
※意味があるか分かりませんが、ローカルのMYSQLのバージョンを合わせてみようとしているところです。

該当のソースコード

※趣味で書いているため、一般的でない記述の仕方をしてるかもしれませんが、ご容赦ください。

PHP7.2

1/** 2 * databaseConnect.php 3 */ 4$link = mysqli_connect('localhost','(ユーザ名)','(パスワードがここに入る)','(DB名)'); 5mysqli_set_charset($link, 'utf8'); 6 7/** 8 * registMember.php 9 */ 10 11// DB接続情報取得 12include 'tools/databaseConnect.php'; 13 14// メンバー情報の登録 15$query = 16 "INSERT INTO usertable ( 17 loginID, loginPassword, name, adddate, updatedate, isAdmin, 18 question, answer, defTax, payNameFlg, payCateFlg, paymentFlg, payMemoFlg, 19 taxCalcFlg, incNameFlg, incCateFlg, incMemoFlg 20 ) 21 VALUES ( 22 '$loginID', '$password', '$name', '$registDate', '$registDate', $isAdmin, 23 '$question', '$answer', '$defTax', '$payNameFlg', '$payCateFlg', '$paymentFlg', '$payMemoFlg', 24 '$taxCalcFlg', '$incNameFlg', '$incCateFlg', '$incMemoFlg' 25 )"; 26$queryResult = mysqli_query($link, $query); 27$this->result = mysqli_fetch_assoc($queryResult); 28 29$test = mysqli_error($link); 30var_dump($test); 31 32var_dump($query); 33var_dump($queryTest); 34var_dump($this->result);

試したこと

上記のregistMember.phpをnewでオブジェクト化し、ユーザ定義関数を呼び出して実行しています。

なお、var_dumpの出力結果は下記の通りです。
※変数の数値は適当です。

NULL
string(581) "INSERT INTO usertable ( loginID, loginPassword, name, addDate, updateDate, isAdmin, question, answer, defTax, payNameFlg, payCateFlg, paymentFlg, payMemoFlg, taxCalcFlg, incNameFlg, incCateFlg, incMemoFlg ) VALUES ( 'ando0213', '(パスワード)', '安藤 つばき', '2018-02-12 12:50:21', null, '0', 'SHIROBAKO?', 'ぷるんぷるん天国', '8', '1', '0', '0', '0', '0', '1', '0', '0' )"
NULL
NULL

※なおサーバ上のMYSQLクライアント上でクエリを実行したところ、問題なく挿入されました。
そもそも接続に失敗してるようなので、DBのテーブル定義は省略します。
必要であればコメントください。

恐縮ですが、ご協力お願いします。

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

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

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

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

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

guest

回答1

0

自己解決

申し訳ありません、自己解決しました。
mysqli_connect関数の設定値が気付かない間に変わっていたようです。
それを修正したところ、無事挿入できました。

投稿2018/02/12 07:46

NowellGartelt

総合スコア9

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問