2016-09-09 2 views
0

Ich lerne PHP und MySQL. Im Moment benötige ich Hilfe zum Löschen von Bildern mit der $ _GET Methode. Ich kann das Bild aus dem Ordner, aber nicht aus der Datenbankspalte entfernen. Hier ist meine Datenbankstruktur für userinfo Tabellenspalten sindBild Verknüpfung von Ordner aufheben, aber nicht aus Datenbankspalte löschen

user_id | Benutzername | E-Mail | Passwort | Abteilung | Position | Vorname | letzter_name | Status | user_pic | join_date |

modifiziert ist

Hier meine PHP-Code:

<?php 
    include 'sql.php'; 
    if(isset($_GET['delete_id'])) 
    { 
    // select image from db to delete 
    $select_img = mysql_query("SELECT user_pic FROM userinfo WHERE user_pic 
    =" .$_GET['delete_id']); 

    $db_field= mysql_fetch_array($select_img); 

    unlink("assets/img/user_images/".$db_field['user_pic']); 
    //delete from db 
    mysql_query("DELETE FROM userinfo WHERE user_id=".$_GET['delete_id']); 

    if($select_img===false){ 
    die(mysql_error()); 
    } 

    else 
    {?> 
    <script> 
     window.alert('Delete images Success!!!'); 
     </script> 
    <?php 
     header("refresh:2;user_profile_settings.php"); 
    } 
    } 

?> 
// here is the HTML part Which display using while loop 
<a class="btn close" href="?delete_id=<?php echo $userpic; ?>" title="click  
for delete" onclick="return confirm('sure to delete ?')" >&times;</a> 
<img src="assets/img/user_images/<?php echo $userpic; ?>" /> 

Ich weiß, das ist ziemlich einfach Code ist .. Ich will das ist erfahren, warum ich dieses Posting bin. Ich habe schon jede Menge Technik gemeistert, aber jedes Mal habe ich versagt. Bitte hilf mir dabei. Fortschritt Danke

+3

Sie sind anfällig für [sql injection attacks] (http://bobby-tables.com), also keine Sorge - Ihr Problem "Kann nicht aus Datenbank löschen" wird bald gelöst, sobald jemand löscht Ihre gesamte Datenbank für Sie. Außerdem LIEGT du über den Lösch-Erfolg. Sie überprüfen nicht den Status der "Löschen" -Auffrage, NUR die ursprüngliche "Auswahl" -Abfrage, so dass Sie einfach ÜBERNEHMEN, dass nichts jemals schief gehen könnte. –

+0

Sie möchten ein Bild mit UserID löschen? Wenn das der Fall ist, solltest du das zuerst editieren: user_pic = ". $ _ GET ['delete_id'] – MoeinPorkamel

+0

@MarcB Sir, ich lerne die Grundlagen. Ich kenne diesen Angriff. Und warum sollte ich für das Lernen gelogen haben. unlink() function work Anyways thanks for your advice –

Antwort

1

DELETE FROM löscht die gesamte Zeile. Ich bin mir ziemlich sicher, dass es wegen foreign keys oder so etwas ablehnt.

Wenn Sie nur die Spalte leeren möchten, sollten Sie UPDATE

$query = "UPDATE userinfo SET user_pic='' WHERE user_id='$_GET['delete_id']'"; 
mysql_query($query); 

Sie sollten auch die anderen hören verwenden, was sagen und darüber nachdenken, zu MYSQLI Schalten, aber noch wichtiger ist, SQL-Injection zu verhindern!

+0

Danke für die alternative Lösung. Und bald werde ich zu MYSQLi wechseln. –

+0

Bessere Lösung – devpro

Verwandte Themen