2017-03-27 38 views
-2

我想從數據庫中回顯整行,如果該行的列之一具有指定的值。初學者的PHP的MySQL如何打印行中的所有列

這裏是什麼,我試圖做一個簡單的例子:從這個

database

我想呼應整排誰擁有1爲「等級」值。因此,舉例來說,最終的結果將是:

亞當·斯密1個東西757890

曼德拉1和其他的東西800656

所以很自然我嘗試這樣做:

$query = "SELECT * FROM data WHERE level = '" . $askedLevel . "'"; 
$run_query = mysqli_query($mysql, $query); 

但我該如何從這裏去迴應我想要的?

感謝所有幫助

+2

歡迎來到[so]!看起來你需要更多地瞭解這裏用戶的期望。你應該嘗試**自己編寫代碼**。 [做更多的研究](// meta.stackoverflow.com/questions/261592)如果你有一個問題,你可以**發佈你已經嘗試** **清楚說明什麼是不工作**並提供[** Minimal,Complete和Verifiable示例**](// stackoverflow.com/help/mcve)。我建議閱讀[問]一個好問題和[完美問題](http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/)。另外,一定要參加[旅遊]。 –

+0

只需在google中鍵入您的標題,看看發生了什麼'php mysql如何打印所有列的行'你不需要堆棧溢出這個問題 ' –

回答

1

你會遍歷每一行,像這樣:

while($row = mysqli_fetch_assoc($run_query)){ 
    echo $row["first_name"] . $row["last_name"]; 
} 

很明顯,你會改變"first_name""last_name"你需要的任何列名,但是這是基礎知識你需要做什麼。

mysqli_fetch_assoc獲取結果並將其放入數組以及它們的相對列名稱中。

由於arif_suhail_123還指出,你有你的SQL內的安全問題;即,不使用參數化查詢來解析變量到您的SQL

爲了解決這個問題,你會做的是:

$stmt = mysqli_prepare($mysql, "SELECT * FROM data WHERE level = ?"); 
mysqli_stmt_bind_param($stmt, 'i', $askedLevel); // binding the variable $askedLevel to '?' 
$result = mysqli_stmt_execute($stmt); // executing the question 

while($row = mysqli_fetch_assoc($result)){ 
    // print rows 
} 

僅供參考,i意味着整數。 s表示字符串。 d意味着雙倍。


SUGGESTION:現在,這是沒有必要爲你的查詢才能正常工作,但是,它清理(並使其可讀性更強)您PHP顯着。但是,我強烈建議您切換到面向對象PHP

它會改變上面的腳本看起來像這個,而不是:

$stmt = $mysql->prepare("SELECT * FROM data WHERE level = ?"); 
$stmt->bind_param('i', $askedLevel); 
$result = $stmt->execute(); 

while($row = $result->fetch_object()){ 
    echo $row->first_name . $row->last_name; 
} 

這完全取決於你的,但是! :)

+0

請給他提這個,代碼不安全 –

+1

@ arif_suhail_123我首先回答了他的問題。我目前正在編輯我的答案還包括他肯定應該使用參數化查詢的事實。 –

+0

現在是有效答案+1 –