php mysql UPDATE fehler! Nur so ist er?
Hiho!
Hier ist der quellcode:
Könntet ihr mir vllt helfen den Fehler zu finden? Hier der Link zur datei wo ich nen Error bekomme:
http://warden.itpro-forum.de/admin/edit_profile.php
Error Meldung:
Hier ist der quellcode:
|
|
PHP-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<?php
if(isset($_GET['do']))
{
if($do=="change") {
$updaten = 'UPDATE `myself` (`name`, `vorname`, `nickname`, `alter`, `hobbys`, `cpu`, `ram`, `mobo`, `graka`, `tower`, `laufwerke`, `kuehler`, `fav. musik`, `fav. band`, `fav. qoute`) VALUES (''$name'', ''$vorname'', ''$nickname'', ''$alter'', ''$hobbys'', ''$cpu'', ''$ram'', ''$mobo'', ''$graka'', ''$tower'', ''$laufwerke'', ''$kuehler'', ''$fav. musik'', ''$fav. band'', ''$fav. qoute'')';
$update = mysql_query($updaten);
}
if($do=="reset") {
$result = mysql_query("SELECT * FROM myself") or die (mysql_error());
$menge = mysql_num_rows($result);
while($row = mysql_fetch_array($result)){
$name = $row['name'];
$vorname = $row['vorname'];
$alter = $row['alter'];
$hobbys = $row['hobbys'];
$nickname = $row['nickname'];
$cpu = $row['cpu'];
$ram = $row['ram'];
$mobo = $row['mobo'];
$favmusik = $row['fav. musik'];
$favband = $row['fav. band'];
$favquote = $row['fav. qoute '];
}
}
}
?>
|
Könntet ihr mir vllt helfen den Fehler zu finden? Hier der Link zur datei wo ich nen Error bekomme:
http://warden.itpro-forum.de/admin/edit_profile.php
Error Meldung:
Zitat
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in /www/htdocs/wardens/admin/edit_profile.php on line 156
www.butcher.info.ms
was ist das denn für ein ekeliges SQL Statement.
Hier ein Beispiel:
$aendern ="UPDATE tabelle SET atributenname = ' ' WHERE primärschlüssel = ' ' ";
Greetz
MaxTPayne
PS: Bei deinem Beispiel link sagt er mir das es erfolgreich war.
€dit: Fals dein SQL Statement doch klappen sollte musst du mindestens bei deiner Variable $updaten='' die beiden ' ' am anfang und ende durch ein " ersetzen da sonst der Variablenwert nicht ersetzt wird.
Hier ein Beispiel:
$aendern ="UPDATE tabelle SET atributenname = ' ' WHERE primärschlüssel = ' ' ";
Greetz
MaxTPayne
PS: Bei deinem Beispiel link sagt er mir das es erfolgreich war.
€dit: Fals dein SQL Statement doch klappen sollte musst du mindestens bei deiner Variable $updaten='' die beiden ' ' am anfang und ende durch ein " ersetzen da sonst der Variablenwert nicht ersetzt wird.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »maxtpayne« (17. März 2005, 12:48)
wie würde es richtig heisen?
|
|
PHP-Quelltext |
1 |
'UPDATE `myself` (`name`, `vorname`, `nickname`, `alter`, `hobbys`, `cpu`, `ram`, `mobo`, `graka`, `tower`, `laufwerke`, `kuehler`, `fav. musik`, `fav. band`, `fav. qoute`) VALUES (''$name'', ''$vorname'', ''$nickname'', ''$alter'', ''$hobbys'', ''$cpu'', ''$ram'', ''$mobo'', ''$graka'', ''$tower'', ''$laufwerke'', ''$kuehler'', ''$fav. musik'', ''$fav. band'', ''$fav. qoute'')';
|
www.butcher.info.ms
Zitat
Original von Black-Warden
wie würde es richtig heisen?
![]()
PHP-Quelltext
1'UPDATE `myself` (`name`, `vorname`, `nickname`, `alter`, `hobbys`, `cpu`, `ram`, `mobo`, `graka`, `tower`, `laufwerke`, `kuehler`, `fav. musik`, `fav. band`, `fav. qoute`) VALUES (''$name'', ''$vorname'', ''$nickname'', ''$alter'', ''$hobbys'', ''$cpu'', ''$ram'', ''$mobo'', ''$graka'', ''$tower'', ''$laufwerke'', ''$kuehler'', ''$fav. musik'', ''$fav. band'', ''$fav. qoute'')';
also das was du wissen musst hab ich dir gepostet also probier es aus das was du da gerade mit VALUES machst ist eher ein INSERT Befehl.
@wyros wenn der für jedes Feld ein querry macht ist unnötig ich weiß jetzt nicht ob man das einfach beliebig verlängern kann meine SQL Zeugs wenn ja ist das besser da man dann nur ein querry hat und so das DBMS nicht so belastet

Greetz
MaxTPayne
Hi
So würde ich das machen, ich weiss nicht, ob das jetzt eine Musterlösung ist oder nicht, aber so kommst du sicher ans Ziel
Hier noch ein paar Anmerkungen:
1. Du solltest Einrücken.
Das hat den Vorteil, dass du und alle Anderen, die deinen Code verwenden bzw. dir versuchen zu helfen das SQL-Statement besser lesen können.
2. Du solltest Variablen escapen:
Tutorial: http://www.webmasterwork.com/forum/threa…did=32001/sid=/
3. Schau dir mal dieses Tutorial an, den MySQL-Teil (sind etwa 8 Seiten, sie sind es wert gelesen zu werden):
http://tut.php-q.net/mysql.html
4. Du kannst einer Variable nicht den Namen fav. musik geben, sonst gibt es einen Parseerror.
Eine mögliche Lösung wäre (die ich auch oben angewandt habe!): $fav_musik.
Du musst also einfach noch die Variabelnamen von den drei $fav...-Dingern ändern und dann sollte der MySQL-Query funktionieren.
Ausserdem solltest du noch eine Spalte "id" anlegen mit dem Zusatz AUTO_INCREMENT. Dann musst du in der WHERE-Klausel den id-Teil anpassen. Also einfach ".$id." mit der id (wahrscheinlich 1) von deinem Datensatz ersetzten.
Ich hoffe, dass ich dich jetzt nicht zu sehr verwirrt habe

Mfg Fab
So würde ich das machen, ich weiss nicht, ob das jetzt eine Musterlösung ist oder nicht, aber so kommst du sicher ans Ziel

|
|
PHP-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?php
$sql = "UPDATE
myself
SET
name = '".$name."',
vorname = '".$vorname."',
nickname = '".$nickname."',
alter = '".$alter." ',
hobbys = '".$hobbys."',
cpu = '".$cpu."',
ram = '".$ram."',
mobo = '".$mobo."',
graka = '".$graka."',
tower = '".$tower."',
laufwerke = '".$laufwerke."',
kuehler = '".$kuehler."',
fav. musik = '".$fav_musik."',
fav. band = '".$fav_band."',
fav. qoute = '".$fav_qoute."'
WHERE
id = '".$id."';";
?>
|
Hier noch ein paar Anmerkungen:
1. Du solltest Einrücken.
Das hat den Vorteil, dass du und alle Anderen, die deinen Code verwenden bzw. dir versuchen zu helfen das SQL-Statement besser lesen können.
2. Du solltest Variablen escapen:
Tutorial: http://www.webmasterwork.com/forum/threa…did=32001/sid=/
3. Schau dir mal dieses Tutorial an, den MySQL-Teil (sind etwa 8 Seiten, sie sind es wert gelesen zu werden):
http://tut.php-q.net/mysql.html
4. Du kannst einer Variable nicht den Namen fav. musik geben, sonst gibt es einen Parseerror.
Eine mögliche Lösung wäre (die ich auch oben angewandt habe!): $fav_musik.
Du musst also einfach noch die Variabelnamen von den drei $fav...-Dingern ändern und dann sollte der MySQL-Query funktionieren.
Ausserdem solltest du noch eine Spalte "id" anlegen mit dem Zusatz AUTO_INCREMENT. Dann musst du in der WHERE-Klausel den id-Teil anpassen. Also einfach ".$id." mit der id (wahrscheinlich 1) von deinem Datensatz ersetzten.
Ich hoffe, dass ich dich jetzt nicht zu sehr verwirrt habe

Mfg Fab
-->Vokaline - schneller und effizienter Wörter lernen<-- (kostenlos!)
wieso geht dat schon wieder nich????
// edit_profile.php
// edit_profile_send.php
// edit_profile.php
|
|
Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 |
<?php
if (file_exists('connect.inc.php')) {
include("connect.inc.php"); }
$result = mysql_query("SELECT * FROM myself") or die (mysql_error());
$menge = mysql_num_rows($result);
while($row = mysql_fetch_array($result)){
$name = $row['name'];
$vorname = $row['vorname'];
$alter = $row['alter'];
$hobbys = $row['hobbys'];
$nickname = $row['nickname'];
}
?>
<div align="center">
<FORM ACTION="edit_profile_send.php?do=change" METHOD="POST">
<div align="center">
<table width="80%" border="1" bordercolor="#000000">
<!--DWLayoutTable-->
<tr>
<td width="407" height="23">Name:</td>
<td width="397" valign="top"> <input name="name" type="text" class="input" value="$name; " size="50" maxlength="100">
</td>
</tr>
<tr>
<td>Vorname:</td>
<td> <input name="vorname" type="text" class="input" value="$vorname" size="50" maxlength="100">
</td>
</tr>
<tr>
<td>Alter:</td>
<td> <input name="§alter" type="text" class="input" value="$alter" size="50" maxlength="20">
</td>
</tr>
<tr>
<td>Nickname:</td>
<td> <input name="$nickname" type="text" class="input" value="$nickname">
</td>
</tr>
<tr>
<td>Hobbys:</td>
<td> <input name="$hobbys" type="text" class="input" value="$hobbys">
</td>
</tr>
<tr>
<td height="23" valign="top"><div align="center">Hier findet ihr meine
Fav. Beschäftigungen usw...</div></td>
<td></td>
</tr>
<tr>
<td>Fav. Musik:</td>
<td> <input name="favmusik" type="text" class="input" value="<?php echo $favmusik; ?>">
</td>
</tr>
<tr>
<td>Fav. Band:</td>
<td> <input name="favband" type="text" value="<?php echo $favband; ?>">
</td>
</tr>
<tr>
<td>Fav. Actor:</td>
<td> <input type="text" name="textfield8"> </td>
</tr>
<tr>
<td>Fav. Zitate:</td>
<td> <input name="favqoute" type="text" value="<?php echo $favqoute; ?>"> </td>
</tr>
<tr>
<td>Fav. Essen:</td>
<td> <input type="text" name="textfield10"> </td>
</tr>
<tr>
<td>Fav. Getränk:</td>
<td> <input type="text" name="textfield11"> </td>
</tr>
<tr>
<td>Fav. Internet Seiten:</td>
<td> <input type="text" name="textfield12"> </td>
</tr>
<tr>
<td>Fav. Beschäftigung:</td>
<td> <input type="text" name="textfield13"> </td>
</tr>
<tr>
<td>Fav. TV-Serie:</td>
<td> <input type="text" name="textfield14"> </td>
</tr>
<tr>
<td>Fav. Designprogramm:</td>
<td> <input type="text" name="textfield15"> </td>
</tr>
<tr>
<td>Fav. Codingprogramm:</td>
<td> <input type="text" name="textfield16"> </td>
</tr>
<tr>
<td height="23" valign="top"><div align="center">Das hier meine Computerhardware:</div></td>
<td></td>
</tr>
<tr>
<td>Prozessor:</td>
<td> <input name="cpu" type="text" value="<?php echo $cpu; ?>"> </td>
</tr>
<tr>
<td>Arbeitsspeicher:</td>
<td> <input name="ram" type="text" value="<?php echo $ram; ?>"> </td>
</tr>
<tr>
<td>Mainboard:</td>
<td> <input name="mobo" type="text" value="<?php echo $mobo; ?>"> </td>
</tr>
<tr>
<td>Monitor:</td>
<td> <input type="text" name="textfield21"> </td>
</tr>
<tr>
<td>Grafikkarte:</td>
<td> <input name="graka" type="text" value="<?php echo $graka; ?>"> </td>
</tr>
<tr>
<td>Maus:</td>
<td> <input type="text" name="textfield23"> </td>
</tr>
<tr>
<td>Mauspad:</td>
<td> <input type="text" name="textfield24"> </td>
</tr>
<tr>
<td>Tastatur:</td>
<td> <input type="text" name="textfield25"> </td>
</tr>
<tr>
<td>Kühler:</td>
<td> <input name="kuehler" type="text" value="<?php echo $kuehler; ?>"> </td>
</tr>
<tr>
<td>Gehäuse:</td>
<td> <input name="tower" type="text" value="<?php echo $tower; ?>"> </td>
</tr>
<tr>
<td>Laufwerke:</td>
<td> <input type="text" name="textfield28"> </td>
</tr>
<tr>
<td>Festplatten:</td>
<td> <input type="text" name="textfield29"> </td>
</tr>
</table>
</div>
<div align="center"><br>
<input class="input" type="submit" value="change">
<input class="input" type="reset" value="reset">
</div>
<input type="hidden" name="do" value="$do">
</form>
<br>
<br></div>
|
// edit_profile_send.php
|
|
PHP-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<?php
if (file_exists('connect.inc.php')) {
include("connect.inc.php"); }
error_reporting(E_ALL);
if(isset($_GET['do']))
{
if($_GET['do']=="change") {
$sql = "UPDATE
myself
SET
name = '".$name."',
vorname = '".$vorname."',
nickname = '".$nickname."',
alter = '".$alter." ',
hobbys = '".$hobbys."',
cpu = '".$cpu."',
ram = '".$ram."',
mobo = '".$mobo."',
graka = '".$graka."',
tower = '".$tower."',
laufwerke = '".$laufwerke."',
kuehler = '".$kuehler."',
fav. musik = '".$fav_musik."',
fav. band = '".$fav_band."',
fav. qoute = '".$fav_qoute."'
WHERE
id = '".$id."';";
} else { echo "fehlgeschlagen"; }
}
?>
|
www.butcher.info.ms
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Black-Warden« (22. März 2005, 00:10)
Hi
@maxtpayne
Eigentlich solltest du das ; am Schluss des Queries schreiben, da dass der richtige Syntax wäre.
PHP übernimmt aber die Arbeit für dich und hängt da noch ein ; dran, wenn noch keines dran ist.
Würdest du den Query direkt in der Console ausführen, so würde MySQL einen Fehler ausgeben.
@Black-Warden
1. Das finde ich ein wenig komisch, mach lieber nur name="nickname".
2. Du musst das mit $_POST abfragen, da du es ja über ein Formular übergibst.
3. Die Variabelnamen müssen schon gleich wie im Formular heissen, sonst funktioniert das natürlich nicht
4. Wenn es jetzt immer noch nicht geht, dann solltest du unter das mysql_query() ein `echo mysql_error();` setzten.
Mfg Fab
@maxtpayne
Zitat
Zeile 27 was hat da ein ; zu suchen beim SQL Zeugs ?!?
Eigentlich solltest du das ; am Schluss des Queries schreiben, da dass der richtige Syntax wäre.
PHP übernimmt aber die Arbeit für dich und hängt da noch ein ; dran, wenn noch keines dran ist.
Würdest du den Query direkt in der Console ausführen, so würde MySQL einen Fehler ausgeben.
@Black-Warden
Zitat
name="$nickname"
1. Das finde ich ein wenig komisch, mach lieber nur name="nickname".
Zitat
name = '".$name."',
2. Du musst das mit $_POST abfragen, da du es ja über ein Formular übergibst.
|
|
PHP-Quelltext |
1 |
name = '".$_POST['name']."',
|
3. Die Variabelnamen müssen schon gleich wie im Formular heissen, sonst funktioniert das natürlich nicht

|
|
PHP-Quelltext |
1 2 3 |
fav. musik = '".$fav_musik."', //falsch, da name="favmusik" und kein $_POST
fav. musik = '".$_POST['favmusik']."', // richtig
|
4. Wenn es jetzt immer noch nicht geht, dann solltest du unter das mysql_query() ein `echo mysql_error();` setzten.
Mfg Fab
-->Vokaline - schneller und effizienter Wörter lernen<-- (kostenlos!)
Zitat
Original von Fab
Hi
@maxtpayne
Zitat
Zeile 27 was hat da ein ; zu suchen beim SQL Zeugs ?!?
Eigentlich solltest du das ; am Schluss des Queries schreiben, da dass der richtige Syntax wäre.
PHP übernimmt aber die Arbeit für dich und hängt da noch ein ; dran, wenn noch keines dran ist.
Würdest du den Query direkt in der Console ausführen, so würde MySQL einen Fehler ausgeben.
Mfg Fab
Ich habs nicht genau genug gelesen hab das ' übersehen und nicht richtig nachgedacht denn bei $variable="asdlkfjas";"; gibt es nen Parse Error
Deswegen meinte ich ja auch was das ; da zu suchen hätte 
Und das mit dem ; ist mir schon klar
Ich werde nicht umsonst mit SQL vollgebombt 
Greetz
MaxTPayne


