MySQL: Datenbankeintrag per Formular

FBIagent

Erfahrenes Mitglied
Hi,

wie im Betreff schon angedeutet übergebe ich über ein Formular daten an die .php datei
add_mob.php:

Code:
<body bgcolor="black" text="#ff0000">
<style type="text/css">body{scrollbar-base-color:#000000;scrollbar-arrow-color:#ff0000;scrollbar-highlight-color:#ff0000;scrollbar-track-color:#000000;}</style>
<form method=get action="add_mob.php">
<hr>
<h4>Mob hinzufügen:</h4>
<table>
	<tr>
	 <td>Mob ID:</td><td><input type=text name="mob_id"></td>
	<tr>
	<tr>
	 <td>Mob Name:</td><td><input type=text name="mob_name"></td>
	<tr>
	<tr>
	 <td>Mob Level:</td><td><input type=text name="mob_lvl"></td>
	<tr>
</table>
<hr>
<input type="submit" value="Speichern">
</form>
<body>

Nun wird die verbinndung zu MySQL und der DB erfolgreich aufgebaut.
Aber bei dem Query gibt es keinen Fehler von PHP wenn ich das @ vorweg nehme.
Es wird nichts in die DB geschrieben und ich bekomme von meine überprüfung unten
gesagt fehlgeschlagen:

PHP:
<?php
echo '<body bgcolor="black" text="#ff0000"><style type="text/css">body{scrollbar-base-color:#000000;scrollbar-arrow-color:#ff0000;scrollbar-highlight-color:#ff0000;scrollbar-track-color:#000000;}</style>';
 
// Verbindungsinfos 
$db_host="localhost"; 
$db_name="l2_mob_info"; 
$db_user="root"; // <------- Hier bitte MySQL Login Name eingeben zwischen den gänsefüschen
$db_pw=""; // <-------- Hier bitte MySQL Passwort des oben eingeben Login Namens zwischen den gänsefüschen eingeben
 
// Mit MySQL verbinden 
$mysql_con = @mysql_connect($db_host,$db_user,$db_pw);
if(!$mysql_con){
	echo "Verbindung zu MySQL konnte nicht aufgebaut werden!";
	die();
}else{
	echo "Verbindung zu MySQL wurde aufgebaut.<br>";
}
 
// Mit DB verbinden
$db_con = @mysql_select_db($db_name,$mysql_con);
if(!$db_con){
	echo "Datenbank <i>".$db_name."</i> wurde nicht gefunden!";
	die();
}else{
	echo "Verbindung zur Datenbank ".$db_name." wurde hergestellt.<br>";
}
 
// MySQL Anfrage
$query = @mysql_query("INSERT INTO `mobs` VALUES ($mob_id,$mob_name,$mob_lvl)");
if(!$query){
	echo "Hinzufügen von Mob <i>".$mob_name."</i> mit ID <i>".$mob_id."</i> fehlgeschlagen!";
	die();
}else{
	echo "Mob <i>".$mob_name."</i> mit ID <i>".$mob_id."</i> erfolgreich hinzugefügt.";
}
?>

Woran könnte es liegen?

THX im Vorraus
MFG FBIagent
 
Das Du keine Fehlermeldung erhältst könnte daran liegen, dass Du Punkt c) der Regeln fürs PHP-Board nicht gelesen hast.
Der Fehler im Query könnte sein, dass Du Zeichenketten einfügst und sie nicht in einfache Anführungszeichen setzt.

Übrigends ist das @ vor den Methoden IMHO absoluter Unfug, insbesondere, wenn man ein Skript entwickelt. In der fertigen Seite kann man das Error-Reporting runterschrauben, wenn man dem User die Fehler nicht präsentieren will.

Gruß hpvw
 
Also ich bekomme beim Query die Meldung Unknown column '...' in 'field list'
Bei ... steht das was ich vorher beim Formular für $mob_name eingegeben habe.
Kann es daran liegen, das die spalte varchar ist?
 
Zuletzt bearbeitet:
Hast Du denn genau so viele Werte in Deiner Werteliste, wie Du Spalten in der Tabelle hast?

Hast Du Dir das Manual bezüglich der INSERT-Anweisung schon durchgelesen?

Ich persönlich bevorzuge die SET spalten_name=ausdruck Syntax. Da weiß ich genau, was ich setze und behalte den Überblick.

EDIT: Ach ja, fast vergessen:
hpvw hat gesagt.:
Der Fehler im Query könnte sein, dass Du Zeichenketten einfügst und sie nicht in einfache Anführungszeichen setzt.
Gruß hpvw
 
Zuletzt bearbeitet:
Ich habe $mob_id mal einfach mit 'Monster' ausgetauscht und siehe da es funktioniert. Ich werde es
mal mit SET versuchen kann ich denn überhaupt SET mit INSERT kombinieren?
Ja ok habs ausprobiert das kann man.
 
Zuletzt bearbeitet:
FBIagent hat gesagt.:
Ich werde es mal mit SET versuchen kann ich denn überhaupt SET mit INSERT kombinieren?
Natürlich kannst Du das, SET ist Teil der (im Handbuch) dritten Möglichkeit, INSERT-Statements zu schreiben.
Es wird vermutlich reichen, wenn Du vor jedem $ im Query und nach jedem Variablennamen ein einfaches Anführungszeichen einsetzt.

Gruß hpvw
 
Ok danke mit den einfachen Anführungszeichen geht es diese brauche ich aber auch nur
bei $mob_name, weil die anderen beiden Werte sowieso nur zahlen sind.

Hier nochmal das fertige Script:
PHP:
<?php
echo '<body bgcolor="black" text="#ff0000"><style type="text/css">body{scrollbar-base-color:#000000;scrollbar-arrow-color:#ff0000;scrollbar-highlight-color:#ff0000;scrollbar-track-color:#000000;}</style>';
// Verbindungsinfos 
$db_host="localhost"; 
$db_name="l2_mob_info"; 
$db_user="root"; // <------- Hier bitte MySQL Login Name eingeben zwischen den gänsefüschen
$db_pw=""; // <-------- Hier bitte MySQL Passwort des oben eingeben Login Namens zwischen den gänsefüschen eingeben
 
// Mit MySQL verbinden 
$mysql_con = @mysql_connect($db_host,$db_user,$db_pw);
if(!$mysql_con){
	echo "Verbindung zu MySQL konnte nicht aufgebaut werden: ";
	die(mysql_error());
}else{
	echo "Verbindung zu MySQL wurde aufgebaut.<br>";
}
 
// Mit DB verbinden
$db_con = @mysql_select_db($db_name,$mysql_con);
if(!$db_con){
	echo "Datenbank <i>".$db_name."</i> wurde nicht gefunden: ";
	die(mysql_error());
}else{
	echo "Verbindung zur Datenbank ".$db_name." wurde hergestellt.<br>";
}
 
// MySQL Anfrage
$query = mysql_query("INSERT INTO `mobs` SET `mob_id`=$mob_id, `mob_name`='$mob_name', `lvl`=$mob_lvl");
if(!$query){
	echo "Hinzufügen von Mob <i>".$mob_name."</i> mit ID <i>".$mob_id."</i> fehlgeschlagen: ";
	die(mysql_error());
}else{
	echo "Mob <i>".$mob_name."</i> mit ID <i>".$mob_id."</i> erfolgreich hinzugefügt.";
}
?>

Danke nochmal für die Hilfe.

MFG FBIagent
 
Zurück