2011-01-13 55 views
-2

可能重複:
Help with PHP While function與PHP工作,而控制結構

嘿,

這是爲什麼不工作?

<?php 
$select = "select * from messages where user='$u'"; 

$query = mysqli_query($connect,$select) or die(mysqli_error($connect)); 

$row = mysqli_num_rows($query); 

$result = mysqli_fetch_assoc($query); 

$title = mysqli_real_escape_string($connect,trim($result['title'])); 

$message = mysqli_real_escape_string($connect,trim($result['message'])); 

while(($result = mysqli_fetch_assoc($query))){ 
echo $title; 
echo '<br/>'; 
echo '<br/>'; 
echo $message; 
} 

?> 

哪裏,因爲這工作 -

<?php 

echo $title; 

?> 
+0

$ u不是空白.. – sarthak 2011-01-13 22:21:53

+0

您已發佈此問題,一字一句 - 請不要發佈重複問題。如果您在第一個問題中沒有得到您想要的答案,請對其進行編輯以包含更多信息。 – meagar 2011-01-13 22:29:45

回答

1

變化

while(($result = mysqli_fetch_assoc($query))){ 

while($row = mysqli_fetch_assoc($result)){ 

更新

<?php 
$query = "select * from messages where user='$u'"; 
$result = mysqli_query($connect,$query) or die(mysqli_error($connect)); 
$number_of_rows = mysqli_num_rows($result); 
while($row = mysqli_fetch_assoc($result)){ 
    $title = trim($row['title']); 
    $message = trim($row['message']); 
    echo $title; 
    echo '<br/>'; 
    echo $message; 
    echo '<br/>'; 
} 
?> 
+0

仍然不起作用。 – sarthak 2011-01-13 22:18:18

0

除了dqhendricks的建議,你永遠不會使用你的返回值。取而代之的

while ($result = mysqli_fetch_assoc($query)){ 
    echo $title; 
    echo '<br/>'; 
    echo '<br/>'; 
    echo $message; 
} 

使用

while ($row = mysqli_fetch_assoc($result)){ 
    echo mysqli_real_escape_string($connect,trim($result['title'])); 
    echo '<br/>'; 
    echo '<br/>'; 
    echo mysqli_real_escape_string($connect,trim($result['message'])); 
} 

也:

  • 從未使用來自mysqli_num_rows
  • 搶assoc命令陣列結果沒有測試它是否null while循環
0

如果您的查詢返回1行,則while中的條件始終爲false(您已經通過$result = mysqli_fetch_assoc($query);以上幾行提取了第一行。此外,您只分配$ title一次,所以即使執行while循環,它也會始終打印第一個標題。
你爲什麼逃脫結果???通常使用mysqli_real_escape_string來轉義查詢參數,而不是結果。

0

幾件事情錯在這裏:

1)確保你正確消毒$ U - 目前還不清楚它從何而來,但如果它的用戶輸入,你需要逃避它。

2)您使用的mysqli函數錯誤。典型的方法是:

//define a query 
$sql = 'SELECT .. FROM ...'; 

//query the database to obtain a result 
$result = mysqli_query($sql); 

//iterate over the result, fetching rows as associative arrays. 
while ($row = mysqli_fetch_assoc($result)){ 
    echo "Foo = " . $row['foo'] ."!<br/>"; 
} 

3)目前尚不清楚爲什麼你對從數據庫中獲得的值使用real_escape。您可能需要htmlspecialchars()

0

這不起作用,因爲您在設置其值之前使用了結果數組。

從技術上講,這應該運行,但它看起來並不像預期的結果。

嘗試用$ result ['title']替換$ title。