首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql_query()为FALSE,但mysql_error()为空

问mysql_query()为FALSE,但mysql_error()为空
EN

Stack Overflow用户
提问于 2011-08-17 10:59:33
回答 3查看 5.5K关注 0票数 1

我正在运行非常复杂的查询,它是由几个内部查询构建的。查询开始时包含SQL_CALC_FOUND_ROWS。不幸的是,只能获取多少行(我无法获取结果本身)。

我决定摆脱SQL_CALC_FOUND_ROWS,运行两个不同的查询,一个是对行进行计数,另一个是获取它们。在这种情况下,我可以检索结果,但是COUNT(*)查询的行为很奇怪。我就是这样做的:

query

  • mysql_query()在COUNT(*)查询返回空字符串

后直接返回

  1. 执行计数(*)

守则是:

代码语言:javascript
复制
$sqlCount = "SELECT COUNT(*) AS c FROM ... WHERE ...";
$resultCount = mysql_query($sqlCount);
echo "RESULT COUNT: " . ($resultCount === FALSE) . "<br />";//it returns 1(true)
echo mysql_error(); //it returns nothing (blank string)

另外, mysql_errno()返回0

你能为这种奇怪的情况找到合理的解释吗?

EN

回答 3

Stack Overflow用户

发布于 2011-08-17 11:45:49

我没有看到你的代码有任何错误。请尝试将mysql_query行更改为

代码语言:javascript
复制
 $resultCount = mysql_query($sqlCount) or die(mysql_error() ." <-- There was an error when proccessing query");

看上去很奇怪,但能帮到你

票数 1
EN

Stack Overflow用户

发布于 2011-08-17 12:22:42

这很奇怪,因为带有SQL_CALC_FOUND_ROWS的select子句返回行数,而附加查询将返回行数。如果您使用

代码语言:javascript
复制
$result = mysql_query('SELECT SQL_CALC_FOUND_ROWS * from table');
$total = mysql_query('SELECT FOUND_ROWS()');
process $result.

你不应该有任何问题。

票数 0
EN

Stack Overflow用户

发布于 2011-08-17 13:24:28

你能填一下...gaps然后试试吗?

代码语言:javascript
复制
<?php
error_reporting(E_ALL);
ini_set('display_errors', true);

$mysql = mysql_query('..', '..', '..') or die(mysql_error());
mysql_select_db('...', $mysql) or die(mysql_error($mysql));

echo '<pre>Debug: mysql_get_server_info='; var_dump(mysql_get_server_info($mysql)); echo "</pre>\n";
echo '<pre>Debug: mysql_get_client_info='; var_dump(mysql_get_client_info()); echo "</pre>\n";

$sqlCount = "SELECT COUNT(*) AS c FROM ... WHERE ...";
echo '<pre>Debug: sqlCount='; var_dump($sqlCount); echo "</pre>\n";
$resultCount = mysql_query($sqlCount, $mysql);
echo '<pre>Debug: resultCount='; var_dump($resultCount); echo "</pre>\n";
echo '<pre>Debug: mysql_error='; var_dump(mysql_error($mysql)); echo "</pre>\n";
echo '<pre>Debug: mysql_errno='; var_dump(mysql_errno($mysql)); echo "</pre>\n";

然后把输出发出来?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7091691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档