2017-03-28 2 views
0

Wie kann ich mehrere Spalten in der Tabelle aktualisieren? Es ändert nicht die Daten in der Datenbank.Es wird nicht in der Datenbank aktualisiert oder geändert

<?php 
$id = $_GET['user']; 
$any = mysql_query("SELECT * FROM function WHERE id='".$id ."'"); 
if ($edit = mysql_fetch_assoc($any)){ 
?> 

//this is the form for the input type when updating the column 

<form action="reserve_event.php" method="POST"> 
    <input type="text" name="fh" value="<?php echo $edit['fh'];?>"> 
    <input type="text" name="package" value="<?php echo $edit['package'];?>"> 
    <input type="text" name="guest" value="<?php echo $edit['guest'];?>"> 
    <input type="text" name="fee" value="<?php echo $edit['fee'];?>"> 
    <input type="text" name="status" value="<?php echo $edit['status'];?>"> 
    <input type="submit" name="submit" value="submit"> 
</form> 

//this part is when i submit the data. 
<?php 
} 
if(isset($_POST['submit'])){ 
    $fh= $_POST["fh"]; 
    $package= $_POST["package"]; 
    $guest= $_POST["guest"]; 
    $fee = $_POST["fee"]; 
    $status= $_POST["status"]; 
    $sql1 = mysql_query("UPDATE function SET fh='".$fh."',package= '".$package."', guest = '".$guest."',fee = '".$fee."',status= '".$status."' WHERE id='".$id."'"); 
} 
?> 
+3

Sie haben einen Fehler in der PHP-Tag "

+1

Auch wenn Sie die} entfernen 'da @DanIonescu Ihnen sagt und es immer noch nicht aktualisiert, setzen Sie diesen Code nach' mysql_query' und sagen Sie uns das Ergebnis: 'if (! $ sql1) stirbt ('Ungültige Abfrage:'. mysql_error()); ' –

+1

Ihr Code ist anfällig für SQL-Injection. In den PHP-Dokumenten und/oder [diesem Beitrag] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) erfahren Sie, wie Sie vorbereitete Anweisungen verwenden. –

Antwort

0

Sie können versuchen, mit Schlag gegeben Code:

<?php 
if(isset($_POST['submit'])) 
{ 
    $fh= $_POST["fh"]; 
    $package= $_POST["package"]; 
    $guest= $_POST["guest"]; 
    $fee = $_POST["fee"]; 
    $status= $_POST["status"]; 
    $sql1 = mysql_query("UPDATE `function` SET `fh`='".$fh."',`package`= '".$package."', `guest` = '".$guest."',`fee` = '".$fee."',`status`= '".$status."' WHERE `id`='".$id."'"); 
} 
?> 
+1

was hast du geändert? Warum soll dieser Code die Probleme von OP beheben? Bitte fügen Sie Details zu Ihrer Antwort hinzu –

+0

Ich habe die 'für Tabellenname und Felder Name ändern. –

+1

Sie heißen Backticks und dienen nur dazu, mysql reservierte Wörter zu umgehen, falls sie in Tabellen verwendet werden. In [this] (https://dev.mysql.com/doc/refman/5.5/en/keywords.html) finden Sie eine Referenz zu den reservierten Wörtern –

0

Sie sind für Ihren Tabellennamen eines reserviertes Wort „Funktion“ für MySQL verwenden, einem oder Ihre Spalten Namen „Status“ ist ein reserviertes Wort auch. Das bedeutet, dass der mysql-Server die Funktion liest und versucht, sie auszuführen, anstatt die Tabelle mit diesem Namen auszuwählen. IMHO ist es besser, reservierte Wörter in der Tabellen- oder Spaltendefinition nicht zu verwenden, aber Sie können Backticks verwenden, um den Namen zu entgehen.

This link wird Ihnen eine Liste der reservierten Wörter zur Verfügung stellen. Also einfach Ihre Anfrage auf diese Weise anpassen:

$sql1 = mysql_query("UPDATE `function` 
SET fh='$fh',package= '$package', guest = '$guest',fee = '$fee', `status`= '$status' 
WHERE id='$id'"); 

prüfen mit dem Link, den ich Ihnen zur Verfügung gestellten, wenn Sie mehr reservierte Wörter in Ihrer Anfrage

Gleiches gilt für die Auswahlabfrage gilt haben:

$any = mysql_query("SELECT * FROM `function` WHERE id='$id'"); 

Auch wie ich in meinen Kommentaren erwähnt: Ihr Code ist offen für SQL-Injektionen: Verwenden Sie vorbereitete Anweisungen, um Benutzereingaben zu bereinigen. Mysql_ * API ist veraltet und in PHP 7 entfernt. Verschieben nach mysqli oder besser PDO

Verwandte Themen