我在phpmyadmin中尝试了以下查询,它返回了正确的结果,但当我尝试将结果传递给php中的一个变量时,该变量实际上是空的(即,当我尝试在mysql_fetch_array的while循环中使用它时,我什么也得不到。而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发布于 2011-02-08 10:44:19
尝试一次执行一个查询。创建临时表,选择该表,然后将其作为三个单独的查询删除。作为安全预防措施,sql套接字在一个执行块中只允许一个查询
它看起来像是..。
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;
");https://stackoverflow.com/questions/4928937
复制相似问题