2017-09-05 2 views
1

Zunächst möchte ich sagen, dass ich bereits gegangen bin ALLE DUPLICATE Fragen. und versuchte die dort vorgeschlagenen Änderungen.PHP- Mysqli-> num_rows liefert immer 0, vorbereitete Anweisungen

Was jetzt habe ich schon versucht num_rows-num_rows() Und mit store_result(); verändern und affected_rows() verwenden.

Aufruf Auch store_result(); nach execute()

ich denke, es könnte ein anderes Problem, das ich nicht

ausrechnen kann
$conn->autocommit(false); 
if ($sucess){ 
    $stmt2 = $conn->prepare("UPDATE e_eventqueue SET e_urlfil=? WHERE e_id=? 
AND u_id=?"); 
    $stmt2->bind_param("iis",$e_urlfil,$e_id,$u_id); 

    if($stmt2->execute()){ 
     $stmt2->store_result(); 
     echo "true"; 
     echo $stmt2->num_rows; // <- this always return 0 even when its not 
     $stmt2->close(); 
     $conn->commit(); 
    } 
else{ 
     $conn->rollback(); 
    echo "rollback"; 
    } 

} 
+0

Sind Sie wirklich etwas zu aktualisieren? MySQL kann 0 betroffene Zeilen melden, wenn das 'UPDATE' zu keiner Änderung führt – Phil

+1

Für die Aktualisierungsabfrage Sie müssen affected_rows überprüfen. nicht num_rows – JYoThI

+1

@Phil ja ich aktualisiere jedes Mal die Werte, die in phpmyadmin sichtbar sind – GeekWithGlasses

Antwort

2

1. Platz: Für Abfrage aktualisieren Sie müssen affected_rows überprüfen. num_rows nicht

2.: Nach Ausführen Prüfung wie diese $row_count= $stmt2->affected_rows; Wenn Abfrage erfolgreich ausgeführt, aber keine Änderungen in Daten bedeuten, wird es return 0.

if($stmt2->execute()){ 

    echo $stmt2->affected_rows; 
} 

affected_rows:

affected_rows ist für insert,update,delete

NUM_ROWS:

NUM_ROWS ist für select

Verwandte Themen