2013-08-06 3 views
0

Я создал запрос, который отлично работает в phpMyAdmin, однако, когда я пытаюсь вызвать его в .php-файле, я получаю следующую ошибку.Запрос, связанный с той же таблицей 3 раза

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; 

Я получаю эту ошибку, потому что таблицы «а», «б» и «в» и поле «mother_id» и «father_id» не существуют до тех пор, пока SQL не вызовет функцию mysql_query ($ select_query).

Код перед строкой 56 смотрит вверх, возвращает и отображает результаты по мере необходимости.

ответ

0
..._id = c.id" .    // <-- you forgot a space, results in c.idWHERE 
"WHERE a.id = " . $user_id; 
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 и запустить этот запрос и посмотреть, действительно ли они идентичны.

Смежные вопросы