2016-07-29 20 views
0

Wie löschen Sie alle Inhalte einer Tabelle in PHP MySQL mit vorbereiteten Anweisung? Muss ich eine vorbereitete Anweisung verwenden, um sicher zu sein, oder funktioniert die Verwendung von $deleteall = mysqli_query($conn,"DELETE FROM mytable;"); ohne Unterschied?PHP Prepared Statement zum Löschen aller Datensätze

Ist dies, wie es angenommen hat, zu tun:

$stmt = $conn->prepare("DELETE FROM mytable"); 
$stmt->execute(); 

Antwort

0

Verwenden Sie diese Art und Weise, es mir funktioniert gut. Hoffe es wird dir helfen.

$stmt= 'DELETE from mytable'; 
$result = $conn->prepare($stmt); 
$result->execute(); 
+0

Es gibt einen großen Unterschied zwischen ** DELETE ** und ** ** TRUNCATE. ** TRUNCATE ** löscht die Tabelle und erstellt eine neue und DELETE löscht nur Datensätze nach Datensätzen. so kann es auf riesigen Tischen sehr langsam sein. ** TRUCATE ** setzt auch das Feld auto_increment zurück und ** DELETE ** nicht den Disk-Speicher frei –

0

Sie könnten TRUNCATE verwenden, um alle Datensätze in einer Tabelle here auf Lösch

$stmt = $conn->prepare("TRUNCATE TABLE `table1`"); 
$stmt->execute(); 

finden, um weitere Informationen zu löschen und gestutzt

3

Es gibt keinen Grund vorbereitete Anweisungen in verwenden, wenn Sie don‘ t haben Parameter.

Vorbereitete Anweisungen existieren, wenn es effizient ist, eine Anweisung mehrere Male auszuführen, möglicherweise mit anderen Argumenten. Sie helfen auch bei der Vermeidung von SQL-Injection: Sie müssen nicht daran denken, manuell zu quotieren und zu entkommen. Aber wenn du etwas nur einmal ausführen willst, gibt es keine Parameter, kümmere dich nicht um vorbereitete Anweisungen.

+0

Ist das wahr? Kann das jemand bestätigen? Ich hatte gehofft, dass dies wahr ist, weil es mich verwirrt, dass ich vorbereitete Anweisungen verwenden musste, um Datensätze aus der Datenbank herauszuholen, wo keine Benutzerspezifikation erforderlich ist, aber in der Vergangenheit gesagt wurde, dass keine Benutzereingabe in die Abfrage eingefügt wird , Ich muss noch vorbereitete aussage verwenden: s – jay

+0

Es ist wahr. Aber Sie müssen Benutzereingaben als "Etwas, das von einem Benutzer zu einem bestimmten Zeitpunkt in der Vergangenheit eingegeben wurde" definieren. Wenn Sie also einen Benutzernamen aus der Datenbank holen und diesen Benutzernamen dann in einer where-Klausel verwenden, müssen Sie vorbereitete verwenden Aussagen wieder. – Philipp

+0

Auch "Sie wenden korrektes Quoting und Escapes an" funktioniert nicht direkt so, die Werte werden nie in die Abfrage sondern in einen Objektbaum geschrieben, wenn alles schon geparst wurde ... aber es kommt zu dem Schluss, dass Sie nichts tun Wenn Sie ps verwenden, müssen Sie sich nicht um diese beiden Dinge kümmern. – Philipp

0

Möglicherweise möchten Sie Datensätze mit Kriterien Parameter löschen, damit der beste Weg, es zu tun:

$sqlQuery = "DELETE FROM TABLE_NAME WHERE id=?"; 
    $statement = $this->dbLink->prepare($sqlQuery); 
    $statement->bind_param("i", $memberId); 
    $statement->execute(); 
    $statement->close();