SQL语句在PHP中不起作用,但在MySQL中起作用

时间:2013-05-09 05:19:45

标签: php mysql phpmyadmin

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

因此,当我将它粘贴到PHPMyAdmin SQL窗口时,此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的计数.NO ERROR。稍后在代码中我将所有数据输出转换为JSON - 并且所有其他查询都有效。这也没有显示JSON记录。再次..没有错误。它们都在同一个数据库连接中运行..等等。很明显,这个语句导致没有返回任何记录。

我回复了SQL语句,然后从Firebug剪切并粘贴到这个问题。然后我将其粘贴到PHPMyAdmin SQL中 - 然后运行它。工作得很好。

感谢任何帮助。

由于

3 个答案:

答案 0 :(得分:2)

  

只返回0会导致“mysql_query”调用。

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

因此,下一步是找出错误是什么。为此,请打印mysql_error()的结果。

您还应该将代码从mysql_*迁移到mysqliPDO,因为旧的mysql_*方法将从PHP中删除。有关详细信息,请参阅PHP手册中的this link

答案 1 :(得分: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

答案 2 :(得分:0)

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

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

如果您正在执行类似操作,请尝试使用mysqli_multi_query代替:

/app/wsgi.py

...现在看起来有些尴尬。 :)

希望这对以后的人有所帮助!