2017-06-17 4 views
1

ich folgenden Code haben (vereinfacht Fehler markieren):MySQL Query-null-Werte in PHP zurückgibt, funktioniert aber normalerweise

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

Es funktioniert in MySQL, aber wenn ich es in PHP zu verwenden, bricht es und gibt alle NULL Werte. Ich weiß, dass es mit dem Teil "@x + 1" zu tun hat, denn wenn ich diesen Teil durch etwas anderes, zum Beispiel "Test", ersetze, wird es funktionieren.

Was könnte das Problem sein?

Antwort

1

Das funktioniert gut für mich (getestet mit PHP 5.6.30 und MySQL 8.0.0).

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

Output (I nach hinzugefügt drei Reihen meiner Tabelle 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 
     ) 
) 

anzumerken, dass der assoziative Array Schlüssel der vollständige Ausdruck ist. Möglicherweise möchten Sie der Spalte einen Alias ​​in Ihrer Abfrage geben.

+0

Hmm es funktioniert. Ich nehme an, dass ich zu viel Code weggenommen habe, um zum minimalen Fehlerfall zu kommen. Ich werde weiterspielen, um genau zu sehen, wo der Fehler passiert. –

0

Ich habe nie SET so verwendet. Funktioniert es mit SELECT?

+0

Ich habe mich vertippt, ich wollte "SELECT" in meinem Code haben. Habe es einfach geändert. Entschuldigungen dafür –

Verwandte Themen