以下の文で「client_master」テーブルと「jobmaster0717」テーブルを内部結合させようとしているのですが、うまく行きません。どこがおかしいのでしょうか?
<?php
// データベースサーバへの接続・データベースの選択
$db = mysql_connect('localhost','test','password');
$db_name = 'test';
mysql_select_db($db_name,$db);
// 処理対象テーブル
$tbl_name1 = "client_master";
$tbl_name2 = "jobmaster0717";
// 内部結合(INNER JOIN句)
$str_sql1 = "SELECT * FROM {$tbl_name1}"
. " INNER JOIN {$tbl_name2}"
. " ON {$tbl_name1}.company_ID"
. " = {$tbl_name2}.client_ID;";
$rs1 = mysql_query($str_sql1,$db);
print "\"{$str_sql1}\"<br>\n";
// 結果セットの表示
show_rs($rs1,$db);
print "<br>\n";
// 結果セット(結果ID)の開放
mysql_free_result($rs1);
// データベースサーバの切断
mysql_close($db);
?>
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
以下5点気をつけるとかなり精度があがるとおもいます。
1)SQL文はヒアドキュメントをつかって書く
2)テーブル名やフィールド名はバッククォートでくくる。
3)SQLのケツに終端子「;」や「\G」はつけない。
4)デバッグのときにはdieでエラーを拾ってやる
5)そもそもSELECTの際にフィールド無指定「*」は使わない
例)
$sql =<<<eof
SELECT *
FROM `{$tbl_name1}`
INNER JOIN `{$tbl_name2}`
ON `{$tbl_name1}`.`company_ID`=`{$tbl_name2}`.`client_ID`
eof;
$rs1 = mysql_query($sql,$db) or die(sql.";<br>".mysql_error()");
No.3
- 回答日時:
>ONの後に()が無いみたいですけど
>関係ないですか?
条件式を不要な()でくくる人がいますが、SQLだけのことを言うなら、今回のように単一の条件式の場合、()は不要です。
No.2
- 回答日時:
<?php
// データベースサーバへの接続・データベースの選択
$db = mysql_connect('localhost','test','password');
$db_name = 'test';
mysql_select_db($db_name,$db);
// 処理対象テーブル
$tbl_name1 = "client_master";
$tbl_name2 = "jobmaster0717";
// 内部結合(INNER JOIN句)
$str_sql1 = "SELECT * FROM {$tbl_name1}"
. " INNER JOIN {$tbl_name2}"
. " ON ({$tbl_name1}.company_ID"
. " = {$tbl_name2}.client_ID);";
$rs1 = mysql_query($str_sql1,$db);
print "\"{$str_sql1}\"<br>\n";
// 結果セットの表示
show_rs($rs1,$db);
print "<br>\n";
// 結果セット(結果ID)の開放
mysql_free_result($rs1);
// データベースサーバの切断
mysql_close($db);
?>
これで動きませんか、
またPHPのエラーはなんとでているでしょうか?
No.1
- 回答日時:
PHPはよくわからないのであれですが、
SQL単体では動くのでしょうか?コマンドラインなどから
SELECT * FROM
client_master
INNER JOIN
jobmaster0717 ON
(client_master.company_ID = jobmaster0717.client_ID)
ONの後に()が無いみたいですけど
関係ないですか?
この回答への補足
samdecoさん、ありがとうございます。
『phpMyAdmin』で試したところ、動きました。
私は、すべて素人で参考書みながら、やっているのですが
SQL単体で動くけど、PHPで動かないというのをいくつか抱えていて
困っております。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- MySQL PHP 画像のアップロード Qiita 2 2022/11/28 04:44
- Access(アクセス) 実行時エラー3131 FROM 句の構文エラーです について 7 2022/06/13 15:45
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- MySQL mysqlがインストールされているのかどうか 1 2023/06/05 14:19
- MySQL mysqlがインストールされているのかわかりません 1 2023/06/05 02:26
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perlを使ってレコード件数を取...
-
データベースファイル(.db)を開...
-
sql*loader 数値のロード
-
PL/SQLで@ファイル名が反応しま...
-
あるDBから別のDBのテーブルをs...
-
作ったはずのDBがphpMyAdminで...
-
ERROR 1044
-
PL/SQLをWindowsのBATファイル...
-
mySQLのデータベースにhtmlのコ...
-
phpMyAdminをCentOS7にインスト...
-
どの程度のデータベースなら、c...
-
CSVを1行しかインポートしない...
-
同じSQL文で極端に検索が遅くな...
-
create databaseがうまくいきま...
-
LinuxでFatal errorが出てしま...
-
mysqlにおけるホストのパーセン...
-
MySQLにログインできなくて困っ...
-
phpMyAdmin、インポートで全角...
-
MySQLへの特殊文字の挿入について
-
データベースに配列を格納する
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
perlを使ってレコード件数を取...
-
二重に記載されてしまう
-
人口の都道府県別の割合を求め...
-
PHP+MySQL 内部結合(INNER_JOIN...
-
検索の秒数表示について
-
sql文のcount変数について
-
データベースファイル(.db)を開...
-
PL/SQLで@ファイル名が反応しま...
-
sql*loader 数値のロード
-
あるDBから別のDBのテーブルをs...
-
PL/SQLをWindowsのBATファイル...
-
mysqlにおけるホストのパーセン...
-
同じSQL文で極端に検索が遅くな...
-
SQLです。あってますか?↓
-
数字で「そ」と「り」
-
mySQLのデータベースにhtmlのコ...
-
SQLServerのselect文でデータ数...
-
create databaseがうまくいきま...
-
作成したレコードセットのCSV出...
-
DBファイルの中身を直接見れな...
おすすめ情報