2011-01-13 4 views
-2

Mögliche Duplizieren:
Help with PHP While functionArbeiten mit dem PHP Während Kontrollstruktur

Hey,

Warum ist das nicht?

<?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; 
} 

?> 

wo, wie das funktioniert -

<?php 

echo $title; 

?> 
+0

$ u ist nicht leer .. – sarthak

+0

Sie haben diese Frage bereits geschrieben, Wort für Wort - bitte keine Duplikationsfragen posten. Wenn Sie die gewünschte Antwort in Ihrer ersten Frage nicht erhalten haben, bearbeiten Sie sie, um weitere Informationen zu erhalten. – meagar

Antwort

1

Änderung

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

zu

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

Update

<?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

funktioniert immer noch nicht. – sarthak

+0

Sie erhalten das Abfrageergebnis mit mysqli_query(), dann erhalten Sie Zeilen aus dem Ergebnis mit mysqli_fetch_assoc() – dqhendricks

+0

und echo $ title; echo $ row ['title']; –

0

Zusätzlich zu Dqhendricks Vorschlag verwenden Sie nie Ihren zurückgegebenen Wert. Statt

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

Verwendung

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'])); 
} 

Sie auch:

  • nie aus dem Ergebnis verwenden mysqli_num_rows
  • greifen ein assoziatives Array ohne Prüfung, ob es null vor der while-Schleife ist
+0

funktioniert nicht ... es ist leer. – sarthak

+0

@sarthak die Variablenänderungen von $ Zeile, $ Ergebnis für $ Ergebnis, $ Abfrage zuerst anwenden –

0

Wenn Ihre Abfrage 1 Zeile zurückgibt, ist die Bedingung in while immer falsch (Sie haben die erste Zeile bereits durch $result = mysqli_fetch_assoc($query); ein paar Zeilen oben abgerufen. Außerdem weisen Sie $ title nur einmal zu, dh selbst wenn while loop ausgeführt wird, wird immer der erste Titel gedruckt.
Und warum entkommen Sie Ergebnis ??? Normalerweise wird mysqli_real_escape_string verwendet, um Abfrageparameter und nicht Ergebnisse zu umgehen.

0

Mehrere Dinge falsch hier:

1) Seien Sie sicher, dass Sie richtig $ u Hygienisierung - es ist nicht klar, woher es kommt, aber wenn es eine Benutzereingabe ist, müssen Sie es entkommen.

2) Sie verwenden die mysqli-Funktionen falsch. Der typische Weg ist:

//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) Es ist nicht klar, warum Sie real_escape auf den Werten verwenden Sie aus der Datenbank zu bekommen. Sie möchten wahrscheinlich htmlspecialchars() stattdessen.

0

Dies funktioniert nicht, da Sie das Ergebnisarray verwenden, bevor Sie seinen Wert festlegen.

Technisch sollte das laufen, aber es sieht nicht so aus, als ob es beabsichtigte Ergebnisse gibt.

Versuchen Sie $ title durch $ result ['title'] zu ersetzen.