2017-06-17 7 views
1

作品(エラーを強調するために簡略化さ):MySQLのクエリはPHPでのNULL値を返しますが、通常、私は、コードを次している

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

それは、MySQLで動作しますが、私はPHPでそれを使用する場合、それが壊れるとすべて返しますNULL値。私はこの部分を例えば 'test'のようなものに置き換えると、@ x + 1部分と関係があることを知っています。

何が問題になりますか?

答えて

1

これは正常に動作します(PHP 5.6.30およびMySQL 8.0.0でテスト済み)。 (私は私のテーブルfooに3行を追加した後)

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

出力:連想配列のキーは完全な表現であることを

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 
     ) 
) 

注意。クエリで列にエイリアスを付けることができます。

+0

うーん、それは動作します。私は最小限のエラーの場合には、あまりにも多くのコードを削除したと思います。私はどこでエラーが発生したか正確に見るために遊んでいきます。 –

0

私はこれまでにSETを使ったことがありません。 SELECTと動作しますか?

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

私は誤って入力しました。私は自分のコードに「SELECT」を持つことを意図していました。ただそれを変更しました。それについての謝罪 –

関連する問題