gamerff
Goto Top

Problem mit php und mysql

Hallo Forum

ich hab ein Problem beim Update eines Datensatzes
$sql = "UPDATE telefonbuch SET name = '$name', vorname = '$vorname', filiale = '$filiale', bereich = '$bereich', telefon = '$telefon', fax = '$fax', email = '$email', bild = '$bild' WHERE nutzerid = '$id'" ;  
$update = mysql_query($sql);

Kann mir jemand sagen wo mein Fehler liegt

Content-Key: 296397

Url: https://administrator.de/contentid/296397

Printed on: April 19, 2024 at 19:04 o'clock

Mitglied: 114757
114757 Feb 16, 2016 updated at 14:40:57 (UTC)
Goto Top
Biggest failure ever: Kein "escaping" der Variablen ...Say welcome to SQL-Injection face-wink
mysql_real_escape_string
Und das alte MySQL solltest du dringend auf modernere Vatanten wie mysqli oder PDO umstellen!

Gruß jodel32
Member: gamerff
gamerff Feb 16, 2016 at 14:41:39 (UTC)
Goto Top
Funktioniert leider immer noch nicht, hier mal der komplette quellcode

$link = mysql_connect('localhost', 'testnutzer', 'testpasswort')  
    OR die(mysql_error());
    mysql_select_db('telefonbuch', $link);  

$id      = $_POST["id"];  
$name    = $_POST["name"];  
$vorname = $_POST["vorname"];  
$filiale = $_POST["filiale"];  
$bereich = $_POST["bereich"];  
$telefon = $_POST["telefon"];  
$fax     = $_POST["fax"];  
$email   = $_POST["email"];  
$bild    = $_POST["bild"];  

$sql = "UPDATE firma SET name = '$name', vorname = '$vorname', filiale = '$filiale', bereich = '$bereich', telefon = '$telefon', fax = '$fax', email = '$email', bild = '$bild' WHERE nutzerid = '$id'" ;  
mysql_query($sql);
Mitglied: 114757
114757 Feb 16, 2016 updated at 14:50:41 (UTC)
Goto Top
Funktioniert leider immer noch nicht, hier mal der komplette quellcode
Weil du die blanken Post-Daten immer noch nicht escapest...Les doch bitte mal den Link face-sad
Und ob deine ID wirklich ein String und keine Nummer ist weis hier leider auch niemand. Was deine Variablen an Daten enthalten auch nicht, und und und. Geschlossen wird die Verbindung auch nicht, also Käse.
Member: gamerff
gamerff Feb 16, 2016 at 14:54:18 (UTC)
Goto Top
die nutzerid is int(11) Auto Increment
Mitglied: 114757
114757 Feb 16, 2016 updated at 15:13:39 (UTC)
Goto Top
Zitat von @gamerff:

die nutzerid is int(11) Auto Increment
Dann brauchst du auch keine Hochkommas um die ID, kostet nur Performance.
Schalte das PHP-Errorreporting ein dann weist du was Sache ist und was bei dir falsch läuft.

Ich hoffe du hast das escaping inzwischen umgesetzt! Les einfach mal bei Google nach "SQL Injection"...
Member: nxclass
nxclass Apr 20, 2016 at 22:37:04 (UTC)
Goto Top
Wie schon geschrieben, sowas darfst Du heute nicht mehr auf deinen Webserver loslassen.
$sth = $dbh->prepare('  
UPDATE `telefonbuch` SET `name` = ?, `vorname` = ?, `filiale` = ?, `bereich` = ?, `telefon` = ?, `fax` = ?, `email` = ?, `bild` = ?
WHERE `nutzerid` = ?
');  
$sth->execute( array($name, $vorname, $filiale, $bereich, $telefon, $fax, $email, $bild, $id) );
.. weiterhin solltest du die Backticks ` nicht vergessen, oft sind Feldnamen mit MySQL Funktionen gleich
http://php.net/manual/de/class.pdo.php