0

phpMyAdmin で完全に機能するクエリを作成しましたが、.php ファイルでそれを呼び出そうとすると、次のエラーが発生します。

Undefined variable: mothers_name in C:\wamp\www\Family_Tree\showfamily.php on line 56

私のコードは次のとおりです。

$select_query = "SELECT a.id, CONCAT( a.surname,  ', ', a.first_names ) AS child_name, " . 
"CONCAT( b.surname,  ', ', b.first_names ) AS mothers_name, " .
"CONCAT( c.surname, ', ', c.first_names ) AS fathers_name " .
"FROM family_members a " .
"INNER JOIN family_members b ON a.mother_id = b.id " .
"INNER JOIN family_members c ON a.father_id = c.id" .
"WHERE a.id = " . $user_id;

テーブル "a"、"b"、"c"、およびフィールド "mother_id" と "father_id" は、SQL が mysql_query($select_query) 関数を介して呼び出されるまで存在しないため、このエラーが発生するのでしょうか。

56 行目より前のコードは、必要に応じて結果を検索、返し、表示します。

4

2 に答える 2

0
..._id = c.id" .               // <-- you forgot a space, results in c.idWHERE
"WHERE a.id = " . $user_id;
于 2013-08-06T15:50:04.457 に答える
0

Java スタイルの改行から離れて、このように攻撃すると、これがずっと簡単になることがあります。PHP ではそれを分割する必要はありません。句読点が余分にあると、間違いを犯しやすくなります。

$select_query = 
"SELECT 
     a.id, 
     CONCAT( a.surname, ', ', a.first_names ) AS child_name, 
     CONCAT( b.surname, ', ', b.first_names ) AS mothers_name,
     CONCAT( c.surname, ', ', c.first_names ) AS fathers_name 
FROM family_members a 
INNER JOIN family_members b ON a.mother_id = b.id 
INNER JOIN family_members c ON a.father_id = c.id
WHERE a.id = " . $user_id;

これにより、次の非常に便利なデバッグ ツールを使用できるようになります。

echo "[pre]" . $query . "[/pre]";

[ & ] は実際には < & > です。申し訳ありませんが、SOは初めてです。

次に、実際のクエリをブラウザ ウィンドウから phpMyAdmin にコピー アンド ペーストし、そのクエリを実行して、それらが実際に同一であるかどうかを確認できます。

于 2013-08-06T17:53:11.523 に答える