0

发现了一些类似的问题,但没有完全像这样......所以这里......

因此,当我将这条 SQL 语句粘贴到 PHPMyAdmin SQL 窗口中时,它可以完美运行,但在作为 PHP mysql_query 语句运行时它返回零结果(无错误):

SELECT  distinct action_detail2
FROM    stats_tracking
WHERE   date_entered >= '2013-05-08 00:00:00' AND
        date_entered <= '2013-05-08 23:59:59'  AND
        action_detail1 != '10.0.0.1'
ORDER BY    action_detail2

如果语法有问题,您会认为它会出错。如您所见,我正在尝试返回特定日期的所有条目。这在 PHPMyAdmin 上完美运行。只在“mysql_query”调用中返回 0 个结果。

这是代码:

// Fix date entries
$fixFrom = explode("-", $_GET['from']);
$FROM = $fixFrom[2] . "-" . $fixFrom[0] . "-" . $fixFrom[1];
$fixTo = explode("-", $_GET['to']);
$TO = $fixTo[2] . "-" . $fixTo[0] . "-" . $fixTo[1];

// Build SQL statement
$SQL_Centers = "
    SELECT      distinct(action_detail2)
    FROM        stats_tracking
    WHERE       date_entered >= '" . $FROM . " 00:00:00' AND
                date_entered <= '" . $TO . " 23:59:59'  AND
                action_detail1 != '10.0.0.1'
    ORDER BY    action_detail2
";

$resultCenters = mysql_query($SQL_Centers); // Run the actual query.

$dataCount_Centers=mysql_num_rows($resultCenters); // Get the count of rows, just in case we need it.

echo $dataCount_Centers;

这将返回计数 0。没有错误。稍后在代码中,我将所有数据输出转换为 JSON - 所有其他查询都有效。这也显示没有 JSON 记录。再次......没有错误。它们都通过相同的数据库连接运行......等等。显然,这条语句导致没有记录被返回。

我 ECHO 了 SQL 语句,然后将它从 Firebug 剪切并粘贴到这个问题。然后我将它粘贴到 PHPMyAdmin SQL - 并运行它。工作完美。

任何帮助表示赞赏。

谢谢

4

3 回答 3

2

只在“mysql_query”调用中返回 0 个结果。

这意味着您的查询中有错误。0是一个False值。

因此,下一步将是找出错误所在。为此,请打印mysql_error().

您还应该将您的代码从 PHP 迁移mysql_*mysqli或从 PHP 中删除PDOmysql_*方法。有关更多信息,请参阅PHP 手册中的此链接

于 2013-05-09T05:35:04.247 回答
0

首先..我会说,请显示你的 php 代码,同时,你可以试试这个

SELECT  distinct action_detail2 as "ACTION_DETAIL2" 
    FROM    stats_tracking
    WHERE   date_entered >= '2013-05-08 00:00:00' AND
            date_entered <= '2013-05-08 23:59:59'  AND
            action_detail1 != '10.0.0.1'
    ORDER BY    action_detail2
于 2013-05-09T05:25:44.523 回答
0

我知道这已经有好几年了(mysqli 现在是新常态),但我也遇到过类似的问题。如果我将查询粘贴到 phpmyadmin 中,则查询有效,但不是来自 PHP 脚本。除了我的数据库没有更新之外,我没有任何错误,也没有任何迹象表明有什么问题。所以,在手动删除和重建我的数据库表之后(呃......),事实证明我使用的是多行查询,这是标准 mysqli_query 不支持的。例子:

mysqli_query($connection, "SET @x = 0; UPDATE table SET someValue = (@x=@x*2) WHERE someID = 4;");

如果您正在做类似的事情,请尝试使用 mysqli_multi_query 代替:

mysqli_multi_query($connection, "SET @x = 0; UPDATE table SET someValue = (@x=@x*2) WHERE someID = 4;");

......现在看起来很明显的事情。:)

希望这对将来的其他人有所帮助!

于 2018-08-31T07:21:51.870 回答