Sehe den Fehler nicht
ingobar
- php
Hallo zusammen,
ich finde in folgendem Skript den Fehler nicht:
include 'inc/inc_config.php';
$db = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die(mysql_error());
@mysql_select_db(MYSQL_DATABASE,$db) or die(mysql_error());
$s_name = mysql_escape_string($_POST['s_name']);
$s_vname = mysql_escape_string($_POST['s_vname']);
$kl_id = mysql_escape_string($_POST['kl_id']);
/* Prüfen, ob es den Schüler schon gibt. Was passiert, wenn es Schüler mit völlig gleichen Namen gibt? */
$schuler_schon_drin_test = @mysql_query("SELECT * FROM schuler WHERE name='$s_name' AND vname='$s_vname'");
$jawoll = mysql_num_rows($schuler_schon_drin_test);
if ($jawoll>0) {
print_r($schuler_schon_drin_test);
} else {
$myglobals = mysql_fetch_row(@mysql_query("SELECT schueler_id FROM globals"));
$schulerId = $myglobals[0]+1;
$update_globals = @mysql_query("UPDATE globals SET schueler_id='$schulerId'");
$insertSchuler = @mysql_query("INSERT INTO schuler VALUES (id,name,vname,kl_id) VALUES ('$schulerId','$s_name','$s_vname','$kl_id')");
echo "Schüler neu angelegt";
}
Der Fehler ist in der Zeile:
$insertSchuler = @mysql_query("INSERT INTO schuler VALUES (id,name,vname,kl_id) VALUES ('$schulerId','$s_name','$s_vname','$kl_id')");
Laut DB ist der Fehler in ab VALUES. Ich weiß aber nicht warum.
Die Datentypen in der MySQL-DB ist int, text, text, int.
Ich habe die gleiche Konstruktion in einer anderen Datei und da geht es. Was habe ich übersehen?
Falls jemand ürbigens einen Verbesserungsvorschlag hat, dann fände ich das auch toll.
Huhu
Der Fehler ist in der Zeile:
$insertSchuler = @mysql_query("INSERT INTO schuler VALUES (id,name,vname,kl_id) VALUES ('$schulerId','$s_name','$s_vname','$kl_id')");
Das erste "VALUES" im Query ist hier komplett überflüssig.
Viele Grüße
lulu
Hallo ingobar,
$insertSchuler = @mysql_query("INSERT INTO schuler VALUES (id,name,vname,kl_id) VALUES ('$schulerId','$s_name','$s_vname','$kl_id')");
Sowas zu debuggen ist nicht leicht. Lass dir das erzeugte Query doch mal ausgeben.
Wenn du mit @ eine eventuell auftretende Fehlermeldung unterdrückst, solltest du anderweitig darauf reagieren, z. B. mit
@mysql_query(...) or die("fehler... ". mysql_error());
Laut DB ist der Fehler in ab VALUES. Ich weiß aber nicht warum.
Da ist auch ein VALUES zu viel.
Die Datentypen in der MySQL-DB ist int, text, text, int.
Dann solltest (musst?) du die Integer auch als Integer übergeben und nicht als String.
Viele Grüße aus Freiburg,
Marian
Die Datentypen in der MySQL-DB ist int, text, text, int.
Dann solltest (musst?) du die Integer auch als Integer übergeben und nicht als String.
Nein, um Gottes Willen, bloß nicht. Die Zahl kommt doch sowieso als String an, und die Datenbank muß sie parsen. Dann kann man auch gleich Anführungsstriche drumrumsetzen, und dann den Vorteil von mysql_real_escape_string() nutzen, Sicherheit gegen Einspeisung von bösen Usereingaben zu erhalten.
Ob die Usereingabe dem Datentyp des Feldes entspricht, wäre im Zweifel vorher durch Code zu prüfen.