为什么这个MySQL查询在phpmyadmin中工作,但在我的php脚本中不返回任何内容?

为什么这个MySQL查询在phpmyadmin中工作,但在我的php脚本中不返回任何内容?,mysql,join,phpmyadmin,left-join,temp-tables,Mysql,Join,Phpmyadmin,Left Join,Temp Tables,我在phpmyadmin中尝试了以下查询,它返回了正确的结果,但是当我尝试将结果传递给php中的一个变量时,该变量实际上是空的,即,当我尝试在mysql_fetch_数组的while循环中使用它时,我什么也得不到。mysql_num_行只返回1 这是否与我正在MySQL中创建一个临时表有关?问题是: CREATE TEMPORARY TABLE solved SELECT comments.nid FROM flag_content LEFT JOIN comments ON flag_cont

我在phpmyadmin中尝试了以下查询,它返回了正确的结果,但是当我尝试将结果传递给php中的一个变量时,该变量实际上是空的,即,当我尝试在mysql_fetch_数组的while循环中使用它时,我什么也得不到。mysql_num_行只返回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()); 
}
当我调用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

尝试一次执行一个查询。创建临时表,选择它,然后将其作为三个单独的查询删除。作为安全预防措施,sql套接字只允许执行块中的一个查询

它看起来像


需要查看php,这显然是问题的一部分一点错误检查可能就是您所需要的:$result=mysql\u query$query或dieA发生严重的mysql错误。\n查询:$询问\错误:。没有。错误@达贡-我已经编辑了这篇文章来展示PHP。非常基本。正如我在文章中所说,echo mysql_num_rows$result只给了我数字1,而它应该有大约15行。我将在早上的第一件事中尝试您建议的错误检查。函数中没有数据库连接凭据,这可能是问题所在,上面的代码将给出确切的mysql错误。当您在phpmyadmin中运行查询时,您是否将查询输出回屏幕?我注意到有时候phpmyadmin会解析并重新拼凑一个查询,并进行一些编辑。有可能是检测到了一些小问题,并为您进行了调整。您介意给我举个例子吗?我对MySQL不是很有经验。太好了。工作完美。谢谢,杰里米。
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

mysql_query("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;");

$result = mysql_query("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; ");