我有以下代碼(簡化,以突出錯誤):MySQL查詢返回PHP空值,但正常工作
SELECT @x := @x + 1 FROM some_table, (SELECT @x := 0) y
它可以在MySQL中,但是當我在PHP中使用它,它打破並返回所有NULL值。我知道它與「@x + 1」部分有關,因爲如果我用其他東西替換這個部分,例如'test',它就會起作用。
可能是什麼問題?
我有以下代碼(簡化,以突出錯誤):MySQL查詢返回PHP空值,但正常工作
SELECT @x := @x + 1 FROM some_table, (SELECT @x := 0) y
它可以在MySQL中,但是當我在PHP中使用它,它打破並返回所有NULL值。我知道它與「@x + 1」部分有關,因爲如果我用其他東西替換這個部分,例如'test',它就會起作用。
可能是什麼問題?
這對我很好(用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
)
)
注意,關聯數組鍵是充分表達。您可能想要爲查詢中的列提供別名。
我從來沒有用過這樣的SET
。它是否與SELECT
一起使用?
SELECT @x := @x + 1
FROM some_table CROSS JOIN
(SELECT @x := 0) y;
我打錯了,我的意思是在我的代碼中有「SELECT」。只是改變了它。對此的道歉 –
嗯它確實工作。我想我拿走了太多的代碼來達到最小的錯誤情況。我會繼續玩,看看錯誤發生的位置。 –