Почему этот запрос MySQL работает в phpmyadmin, но ничего не возвращает в моем php-скрипте? - PullRequest
1 голос
/ 08 февраля 2011

Я пробовал следующий запрос в phpmyadmin, и он возвращает правильные результаты, но когда я пытаюсь передать результат в переменную в php, эта переменная практически пуста (т.е. когда я пытаюсь использовать его в цикле while с mysql_fetch_array,Я ничего не получаю. И mysql_num_rows возвращает только 1).

Может ли это быть связано с тем, что я создаю временную таблицу в MySQL?Вот запрос:

CREATE TEMPORARY TABLE solved
SELECT comments.nid FROM flag_content
LEFT JOIN comments ON flag_content.content_id=comments.cid
LEFT JOIN term_node ON term_node.nid=comments.nid
WHERE flag_content.fid=3 AND term_node.tid=522;

SELECT node.nid, node.title, users.name, node_counter.totalcount, node_comment_statistics.comment_count, node_comment_statistics.last_comment_timestamp
FROM node
LEFT JOIN term_node ON node.nid = term_node.nid
LEFT JOIN node_comment_statistics ON node.nid = node_comment_statistics.nid
LEFT JOIN node_counter ON node.nid = node_counter.nid
LEFT JOIN users ON node.uid = users.uid
LEFT JOIN solved ON node.nid=solved.nid
WHERE term_node.tid=522 AND solved.nid IS NULL;

Этот запрос хранится в функции PHP:

function getPosts(){
   dbConnect(); //establishes connection
   //"....." in the following line is the above query
   return mysql_query(".......") or die("<b>A fatal MySQL error occured</b>.\n<br />Query: " . $query . "<br />\nError: (" . mysql_errno() . ") " . mysql_error()); 
}

И строка кода, которая вызывает его:

$result = getPosts();

Когда я вызываю getPosts (), запрос умирает с фатальной ошибкой.Я получаю две версии одной и той же ошибки в зависимости от того, объединен ли запрос в несколько строк с помощью "."или просто записано в одну строку.

Ошибка при объединении в несколько строк:

Error: (1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'comments.nid FROM flag_content LEFT JOIN comments ON flag_content.content_id=com' at line 1

Ошибка при записи в одну строку:

Error: (1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT node.nid, node.title, users.name, node_counter.totalcount, node_comment_s' at line 1

1 Ответ

3 голосов
/ 08 февраля 2011

попробуйте выполнить запросы по одному.создайте временную таблицу, выберите ее, а затем отбросьте как три отдельных запроса.из соображений безопасности сокет sql допускает только один запрос в блоке выполнения

Это будет выглядеть примерно так:

...