$sql = "UPDATE ... SET ... WHERE... was mach ich falsch

relaxodeluxe

Mitglied
Hallo zusammen,

bin gerade auf ein problem gestossen, dass ich als fast-rookie erstmal nicht verstehen kann.

vorgeschichte:
(1.seite) formular: nutzer-namen-eingabe
->(2.seite) beginn einer session (nutzername) & check, ob name in der db/table01 existiert, wenn nein
->(3.seite)formular weitere nutzerdaten
->(4.seite)insert into db/table01 & formular individuelle.daten(teil1)
->(5.seite)insert indiv.daten(teil1) into db/table02 & formular indivuduelle.daten(teil2)

problem:

->(6.seite)versuch des eintrags mit folgender query: $sql = "UPDATE table02 SET B1_1=$b11 B1_2=$b12 WHERE usr=$who)";

... funzt nicht ...

in der session ist der nutzername immer vorhanden, diverse andere variablen werden reingeschrieben, aber wieder unregistred. die variaben $b11, ... sollen als tinyint in die MySQL-db uebernommen werden und sind auch in seite 6 mit <? echo $b11; ?> auslesbar. mit der INSERT geschichte aus seite 5 (also übernahme der daten aus den variablen $a11,$a12,... in die table02 funzt einwandfrei.

die erfassung der individuellen daten in mehreren teilen dient der übersichtlichkeit, weil ein formular sonst wohl 30 mal zu scrollen waere.

geht die erfassung zusaetzlicher daten in einer bestehende table-zeile überhaupt auf diese art und weise, oder mach da grundsaetzliches falsch?

zur diskussion steht hier nicht der ergonomische aspekt dieser derben verschachtelung, ich versteh nur besser, was ich mache. am schluss mach ich das schon kompakter.

gruesse.
reldel
 
in der Zeile
$sql = "UPDATE table02 SET B1_1=$b11 B1_2=$b12 WHERE usr=$who)";

so schreiben

$sql = "UPDATE table02 SET B1_1='$b11',B1_2='$b12' WHERE usr='$who'";

er braucht die Kommas, um die Variablen zu trennen!
 
fehler beim posten...

die kommas sind drinne, und auch mal hochzeichen... zum testen. funzt nicht...
hier mal das teil...

PHP:
<?php
@session_start ();

// ::::: DATENBANK :::::
$connectID = mysql_connect ("blabla", "lalala");
@mysql_select_db ("db", $connectID);
$sql = "UPDATE table02 SET B1_1=$b11, B1_2=$b12, B2_1=$b21, B2_2=$b22, B3_1='$b31', B3_2='$b32', B4_1='$b41', B4_2='$b42', B5_1='$b51', B5_2='$b52', B6_1='$b61', B6_2='$b62' WHERE usr=$who)";
$result = mysql_query ($sql, $connectID);
echo "Deine Daten sind erfolgreich eingetragen";

// ::::: Variablen :::::
if ($who) {
  $lognam = $who;
} else {
  echo "Du bist nicht mehr eingeloggt.";
}
?>
 
hmmm.....

... das wars auch nicht. die klammern da oder nicht, macht keinen unterschied. nach wie vor werden die wert der variablen übergeben
PHP:
<? echo... ?>[],
, leider wird die db aber nicht aktualisiert.

kann es daran liegen, dass nur felder in der tabelle mit UPDATE gefüllt werden können, in denen schon was steht? wie realisiert man dann aber sonst ein schrittweises erfassen von vielen daten in einen datensatz einer tabelle???

*nachdenk*
 
Ich weiss einfach nicht, irgendwas wurmt mich an dieser Zeile, nimm einfach die, es liegt manchmal nur an einem billigen . das ein Script nicht funzt :)
PHP:
$sql = "UPDATE table02 set B1_1='$b11',B1_2='$b12',B2_1='$b21',B2_2='$b22',B3_1='$b31',B3_2='$b32',B4_1='$b41',B4_2='$b42',B5_1='$b51',B5_2='$b52',B6_1='$b61',B6_2='$b62' WHERE usr='$who'";

Ich finde keinen Fehler, oder überlese ihn immer :)

und überprüf alle Groß und Kleinschreibungen in der DB sowie im Script, und ob alle Variablen, richtig übergeben werden etc.
 
Zuletzt bearbeitet:
hi, das problem liegt an sql.
du kannst keine "wörter mit" = vergleichen.
nimm mal LIKE , dann gehts
 
Hast du dir den String schon mal mit echo($sql); ausgeben lassen ,um zu sehen was 'wirkklich' in die Datenbank reinkommt?
Hast du mysql_error bei dem Query mal ausprobiert?
Und vor allen Dingen bist du sicher ,dass die Spalten ,und die Tabelle existieren?
Desweitern solltest du auch mal die einzelnen Variablen auf Existenz prüfen (Mysql_error wird ja meckern ,oder du siehst es beim echo)
 
Zuletzt bearbeitet:
Da muss ich Dir leider widersprechen: Man kann sehr wohl ein Textfeld mit einem '=' auf einen Wert prüfen

richtig. darum ging es aber garnicht!

wörter kannst du in sql nicht mit = vergleichen sondern

mit SAME oder LIKE !

um textfelder ging es garnicht


--> wer lesen kann ist klar im vorteil
 
Zurück