WebLabyrinth site image

WebLabyrinthWebに関する様々なメモや個人的実験を行うサイトです

Navi box open

【自分用】MySQLで結果に何も返されない時のチェック項目【備忘録】

phpでMySQLのクエリーを出したのに、結果がからっぽ・・・。いつもと同じ描き方してるのに何でだろう?
なんて時に自分のコードを見直すチェック項目です。

SELECTをWHEREで条件を絞る時に使用する変数が、数値なのか文字列なのか?

$query = 'SELECT fullname FROM ' . $table_name . ' WHERE name="' . $name . '";';

上記コードはデータベースから情報を貰う場合の条件として name カラムに特定の文字列が一致した場合の条件でクエリーを送信するコードになりますが、これは$nameに代入された値が文字列の場合はこのようになります。

$query = 'SELECT fullname FROM ' . $table_name . ' WHERE id=' . $id . ';';

こちらは、検索条件(id)に数値を使用している場合です。前者のコードと見比べるとダブルクォーテーション(”)の有無が確認できると思います。
前回描いたコードをそのままコピーペーストで持ってきた場合に陥りやすいと思います。

関数内でクエリーする場合にはグローバル宣言が必要

function function_name($id) {

	global $db_connecti;

	$query = 'SELECT fullname FROM ' . $table . ' WHERE name="' . $id . '";';
	$db_connecti = mysqli_connect($servername, $username, $password, $database);
	$result = mysqli_query($db_connecti, $query);
	$temp_array = mysqli_fetch_assoc($result);
	return $temp_array['fullname'];

}

データベースへクエリーを行う位置が関数内になる場合は、接続関数をグローバル宣言しなければなりません。

クエリーを行う手前でmysqlをcloseしていた

$db_close = mysqli_close($db_connecti);

/*...略...*/

$query = 'SELECT fullname FROM ' . $table . ' WHERE name="' . $id . '";';
$db_connecti = mysqli_connect($servername, $username, $password, $database);
$result = mysqli_query($db_connecti, $query);
$temp_array = mysqli_fetch_assoc($result);
echo $temp_array['fullname'];

動くわけないですね・・・。でも昔描いたコードの下に追記していった場合に良く陥る罠です。これに気付かず、延々自分の描いたコードの見当違いなところを睨めっこなんてことが良くあります。

とりあえず今度MySQLのクエリー関係で同じような事例が出たら、このページを開いてチェックを行うことにします。

自分用備忘録でした。

この記事を書いた人

ニックネーム: SHIBAZAKI
ブログ: https://weblabyrinth.net

北海道旭川市でweb関係のお仕事をしています。

Trackback URL

https://weblabyrinth.net/what-to-do-if-nothing-is-returned-in-the-result-in-mysql/trackback/

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください