2016-04-20 11 views
0
führt

Von dem, was ich gelesen habe, wenn auf meinem Tisch mit 6 Zeilen und 11 Spalten folgenden SQL-Befehls und fetchAll() Ausführung:SELECT 1 FROM Tabelle, seltsam print_r

$sql = "SELECT 1 FROM table"; 
$sqlPrepared = $conn->prepare($sql) 
$sqlPrepared->execute() 
$result = $sqlPrepared->fetchAll(); 
$print_r($result); 

soll ich bekommen 6 Reihen von nur einem Wert in jeder Reihe, mit dem Wert 1 innerhalb jedes dieser Werte. Aber ich bin immer 6 Reihen von zwei Werten in jeder Zeile mit dem Wert 1 innerhalb jeder dieser Werte:

Array ( 
    [0] => Array ( 
    [1] => 1 
    [2] => 1) 
    [1] => Array ( 
    [1] => 1 
    [2] => 1) 
    [2] => Array ( 
    [1] => 1 
    [2] => 1) 
    [3] => Array ( 
    [1] => 1 
    [2] => 1) 
    [4] => Array ( 
    [1] => 1 
    [2] => 1) 
    [5] => Array ( 
    [1] => 1 
    [2] => 1) 
) 

FRAGE 1: Warum bin ich für jedes Array 2 Werte bekommen, anstatt nur 1?

FRAGE 2: Anstelle der inneren Arrays sein

Array ( 
    [1] => 1 ... 

, warum es nicht startet von [0] ?:

Array ( 
    [0] => 1 ... 
+0

1 sollte der Spaltenname oder meinst du '*'? – aldrin27

+0

@ aldrin27 1 ist nicht der Spaltenname. "SELECT 1 FROM", es ist eine häufig verwendete SQL-Technik, die Ausgabe gibt mir fast das, was ich erwartet habe, der Wert von "1" für jede Zeile, die gefunden wird, aber ich bekomme 2 Spalten von "1" für ein seltsamer Grund. – Webeng

+1

Ich denke 1 überprüft, ob es existiert oder nicht. http://StackOverflow.com/Questions/7171041/what-does-it-mean-by-select-1-from-table – aldrin27

Antwort

4

Wenn Sie irgendeine Flagge bieten nicht auf ->fetchAll() Diese Methode enthält die assoziativen und numerischen Indizes in der mehrdimensionalen Array-Zeile. So

wenn Sie SELECT 1 FROM verwendet, die assoziativen Index 1 (Bedeutung, Spaltenname ist 1), und da Array-Schlüssel eindeutig sind, der numerische Index eingestellt, der numerische Index mit dem Wert-Paar wird auf 2 zugeordnet.

+0

interessant, und gibt es einen Grund, der assoziative Index begann von 1 und nicht 0? Konvention? zufällige Entscheidung von PHP-Team? – Webeng

+0

@Webeng nein, der Spaltenname ist '1', von Ihrer Abfrage' SELECT 1 FROM whatever_table_name' – Ghost

+0

Große Antwort, danke! – Webeng

Verwandte Themen