dポイントプレゼントキャンペーン実施中!

以下の文で「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件)

以下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()");
    • good
    • 0

>ONの後に()が無いみたいですけど


>関係ないですか?

条件式を不要な()でくくる人がいますが、SQLだけのことを言うなら、今回のように単一の条件式の場合、()は不要です。
    • good
    • 0

<?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のエラーはなんとでているでしょうか?
    • good
    • 0

PHPはよくわからないのであれですが、


SQL単体では動くのでしょうか?コマンドラインなどから

SELECT * FROM
client_master
INNER JOIN
jobmaster0717 ON
(client_master.company_ID = jobmaster0717.client_ID)

ONの後に()が無いみたいですけど
関係ないですか?

この回答への補足

samdecoさん、ありがとうございます。
『phpMyAdmin』で試したところ、動きました。

私は、すべて素人で参考書みながら、やっているのですが
SQL単体で動くけど、PHPで動かないというのをいくつか抱えていて
困っております。

補足日時:2007/07/26 16:43
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!