2016-07-21 34 views
0

我是PHP和編程的新手,但我試圖從database其中一個表的每一行中獲得結果print使用foreach語句在PHP中打印MySQL行的方法?

使用一組while環路我實現了這個:

while($placeHolder = $query->fetch_assoc()){ // use assoc 
    echo "<div class='placeHolder'><img src=" . $placeHolder['photo']. " /></div>"; 
    echo "<br />"; 
} 

while($placeHolder2 = $query2->fetch_assoc()){ 
    echo "<div class='placeHolder2'>" . $placeHolder2['name'] . "</div>"; 
    echo "<br />"; 
} 

//etc, etc... 

除了是低效的,我假定這也可能是一個安全隱患。

有沒有更好的方法來做到這一點,可能使用foreach聲明?

這是我的SQL代碼我忘了,包括:

$query = mysqli_query($conx, $sql); 
$query2 = mysqli_query($conx, $sql); 

$sql = ('SELECT id,name,picture FROM table ORDER BY name DESC LIMIT 50'); 
+0

是'$ query2'和'$ query'相同的查詢(除了列被選中)?這可能會爲您打開XSS注射。如果沒有SQL,我們不能說你是否對SQL注入開放。 – chris85

+0

是的,他們是。這非常有趣。我將編輯並向您顯示SQL。 – Jimbu

+0

您可以通過一次獲取來完成此操作。根據「照片」和「名稱」的分配情況,您可能會對XSS注射開放。屬性也應該引用。 'src ='「'..''''' – chris85

回答

0

我不使用foreach語句來打印出結果將使任何減少安全/不安全的思考。這真的取決於你的查詢。您應該能夠使用foreach做這樣的事情來打印所有的人:

$result = $query->fetch_all(MYSQLI_ASSOC); 
foreach($result as $row) { 
    echo $row['photo']; 
} 

注意**使用fetch_all你需要mysqlnd安裝

編輯:看着你的查詢沒有什麼可以在那裏注射。查詢中沒有使用外部變量,所以它的安全性。我只是使用你最初發布的while循環。

編輯2:鏈接fetch_all文檔:http://php.net/manual/en/mysqli-result.fetch-all.php