2017-05-05 44 views
0

在下面的代碼片斷中,我明白mysqli_fetch_row僅適用於列索引(0,1,2等),而不是列名稱。爲什麼一個php語句可以工作而另一個不可用?

但我認爲使用列號/訂購不好的做法(如果訂單更改?)。

如何返回單個行,然後使用列名來獲取數據?

$query = "Select * from users where UserEmail = '" . $UserEmail . "' LIMIT 1"; 

    $result = mysqli_query($connection, $query); 

    $num_rows = mysqli_num_rows($result); 
    $row = mysqli_fetch_row($result); 

    $arr = $result->fetch_assoc(); 
    $log->lwrite('Works/value: ' . $row[0]); 
    $log->lwrite('Does not work/value: ' . $arr['userID']); 
+0

使用'while'循環併爲每個想要引用的列分配一個變量。 –

+0

但'極限1'保證我只得到一行......也許這就是我的心智模型不符合現實的地方:) – 11teenth

+0

是的,那樣做會好起來的;-)雖然可以使用極限1,10類型的東西 –

回答

0

它不工作,因爲fetch_row將結果的指針移動到第二行。並且沒有第二行,因爲您的查詢中有LIMIT。

剛剛刪除第一個抓取就足夠了。

$query = "Select * from users where UserEmail = '" . $UserEmail . "' LIMIT 1"; 

$result = mysqli_query($connection, $query); 

$arr = mysqli_fetch_assoc($result); 
$log->lwrite('Does work now/value: ' . $arr['userID']); 

同時混合面向對象的風格和過程風格被認爲是不好的做法。我在這裏使用了第二個。

+0

非常感謝!我沒有意識到我使用$ row = mysqli_fetch_row($ result);正在干擾什麼應該是一個簡單的語法(拉特定的領域/專欄)。 – 11teenth

相關問題