MySQL查询在PHP中返回空值,但工作正常

时间:2017-06-17 18:35:38

标签: php mysql

我有以下代码(简化为突出显示错误):

SELECT @x := @x + 1 FROM some_table, (SELECT @x := 0) y

它适用于mysql,但是当我在PHP中使用它时,它会中断并返回所有NULL值。我知道它与“@x + 1”部分有关,因为如果我用其他东西替换这部分,例如'test',它将起作用。

可能是什么问题?

2 个答案:

答案 0 :(得分:1)

这适用于我(使用PHP 5.6.30和MySQL 8.0.0测试)。

$stmt = $pdo->query("SELECT @x := @x + 1 FROM foo, (SELECT @x := 0) y");
print_r($stmt->fetchAll(PDO::FETCH_BOTH));

输出(在我向表foo添加三行后):

Array
(
    [0] => Array
        (
            [@x := @x + 1] => 1
            [0] => 1
        )

    [1] => Array
        (
            [@x := @x + 1] => 2
            [0] => 2
        )

    [2] => Array
        (
            [@x := @x + 1] => 3
            [0] => 3
        )
)

请注意,关联数组键是完整表达式。您可能希望在查询中为列添加别名。

答案 1 :(得分:0)

我从来没有像那样使用SET。它适用于SELECT吗?

SELECT @x := @x + 1
FROM some_table CROSS JOIN
     (SELECT @x := 0) y;