MySQL-Problem
#1
Hallo,

jetzt hab ich doch glatt auch mal ein Problem Rolleyes

[code=php]

<?php

$inserten = 'insert graph
{
spieler,
position,
ip
}
values
{
$spielername,
$position,
$REMOTE_ADDR
}';

$db = mysql_connect('localhost', 'testuser', 'testpasswort');
mysql_db_query('testdb', $inserten);

$num = mysql_affected_rows();
if ($num>0)
echo "Es wurde 1 Datensatz hinzugefügt<p>";
else
{
echo "Es ist ein Fehler aufgetreten, ";
echo "es wurde kein Datensatz hinzugefügt<p>";
}
mysql_close($db);

?>

[/code]


Das Problem ist einfach, dass der Datensatz nicht hinzugefügt wird. Und das Problem hatte ich schon einmal und habe seitdem meine, eigentlich gut funktionierende DB, verachtet, weil meine Scripte nie gingen. Vielleicht habe ich auch was mit VARCHAR oder INT oder ähnlichen Sachen falsch gemacht.

Was könnte man denn am besten für Buchstaben bis 40 Zeichen und für ne IP nehmen? VARCHAR? ... ansonsten wär's schön, wenn mir jemand sagen könnte, ob das Script fehlerhaft ist ... ich verzweifel nämlich bald Sad

Grüße
Euer Ex-Moderator Tobi
  Zitieren
#2
aaaaaaah mein weltanschauungsbild ist gestört! mein GOTT hat ein problem! *lol*

na gut.. sowas hab ich ja auch schonmal gemacht.. schau ma mal...

Zitat:$db = mysql_connect('localhost', 'testuser', 'testpasswort');

ich weiß nicht ob beides geht aber ich habe da:
Zitat:$db = mysql_connect(localhost, testuser, testpasswort);



Zitat:$inserten = 'insert graph
{
spieler,
position,
ip
}
values
{
$spielername,
$position,
$REMOTE_ADDR
}';

das habe ich auch anders gelöst und zwar so...
Zitat:$sqlab = "insert termine"; termine ist der name der tabelle
$sqlab .= "(Nr, art, termin, veranstalter, ort, kosten, anmerkung) values "; in der klammer stehen die namen der felder
$sqlab .= "($nr, '$art', '$ter', '$ver', '$ort', '$kost', '$anm') "; ja und das sind die variablen die vorhin durch "values" dann in die felder der tabelle "termine" eingefügt werden


hier musst du beim 2. echo noch einen punkt davor setzen (glaube ich )
Zitat:echo "Es ist ein Fehler aufgetreten, ";
echo "es wurde kein Datensatz hinzugefügt<p>";


ich bin mir nicht sicher aber ich glaube das du noch 2 klammern ({}) machen musst... und zwar bei: if ($num>0) und dann nach mysql_close.....

naja vielleicht hilft ja irgendwas.... Rolleyes

EDIT: varchar(40) oder mehr passt da bestens! :-)
und wenn du nochmal quellcodes postest bitte als zitat! =) kann man viel besser erkennen! dankööö
[Bild: style1,Webmaster-Markt-dot-com.png]
  Zitieren
#3
Zitat:Original von Real_Master

aaaaaaah mein weltanschauungsbild ist gestört! mein GOTT hat ein problem! *lol*

Nobody's perfect Wink

Also mein Script sieht nun so aus:

Zitat:<?php

$sqlab = 'insert graph';
$sqlab .= '(spieler, position, ip) values';
$sqlab .= '($spielername, $position, $ip)';

$db = mysql_connect('localhost', 'testuser', 'testpasswort');
mysql_db_query('testdb', $sqlab);

$num = mysql_affected_rows();
if ($num>0)
echo 'Es wurde 1 Datensatz hinzugefügt<p>';
else
echo 'Es ist ein Fehler aufgetreten, es wurde kein Datensatz hinzugefügt<p>';
echo mysql_error();

mysql_close($db);


?>

Achso, dann habe ich jetzt alle Felder mit VARCHAR() zwischen 30 und 60 gemacht und das erste Feld heißt "id" und ist'n auto-increment, also muss ich das ja bei der Variablenwertübergabe im Script nicht berücksichtigen oder?

Also beim Starten des Scriptes (Variablenwerte in der URL: ...?spielername=Tobi&position=hier&ip=123456) gibt der mir folgenden MySQL-Error aus:

Unknown column '$spielername' in 'field list'


Woran kann das liegen?
  Zitieren
#4
Zitat:Original von Tobi
Woran kann das liegen?
versuch es einfach mal mit " anstatt den '!
oder hast du das schon getan? ich schau es mir noch einmal genauer an.....

weil ich hatte das problem schoneinmal das er nicht beides akzeptiert sondern einmal das geht und einmal das andere.....

aja nochwas:
wenn du varchar verwendest musst du die variablen in ' striche setzen. also anstatt
Zitat:$sqlab .= '($spielername, $position, $ip)';

mach
Zitat: $sqlab .= "('$spielername', '$position', '$ip')";
sind ja alles varchar oder?
und ich habe da gleich die gänsefüßchen ersetzt! Rolleyes

ich weiß nicht was du damit meinst!
Zitat:das erste Feld heißt "id" und ist'n auto-increment, also muss ich das ja bei der Variablenwertübergabe im Script nicht berücksichtigen oder?
[Bild: style1,Webmaster-Markt-dot-com.png]
  Zitieren
#5
also ich würde es einmal so versuchen! Rolleyes
Zitat:<?php

$sqlab = "insert graph";
$sqlab .= "(spieler, position, ip) values ";
$sqlab .= "('$spielername', '$position', '$ip') ";

$db = mysql_connect(localhost, testuser, testpasswort);
mysql_db_query("testdb", $sqlab);

$num = mysql_affected_rows();
if ($num>0)
{
echo " Es wurde 1 Datensatz hinzugefügt<p> ";
}
else
{
echo 'Es ist ein Fehler aufgetreten, es wurde kein Datensatz hinzugefügt<p>';
echo mysql_error(); ***
}
mysql_close($db);
?>


*** was das hier ist weiß ich nicht! kommt da kein ." oda sonstwas?
[Bild: style1,Webmaster-Markt-dot-com.png]
  Zitieren
#6
ok ich würde es so machen:

Zitat:<?php

$sqlab = "insert graph";
$sqlab .= "(spieler, position, ip) values ";
$sqlab .= "('','$spielername', '$position', '$ip') ";

$db = mysql_connect(localhost, testuser, testpasswort);
mysql_db_query("testdb", $sqlab);

$num = mysql_affected_rows();
if ($num>0)
{
echo " Es wurde 1 Datensatz hinzugefügt<p> ";
}
else
{
echo 'Es ist ein Fehler aufgetreten, es wurde kein Datensatz hinzugefügt<p>';
echo mysql_error();
}
mysql_close($db);
?>

aber naja eigentlich würde ich es ganz anders machen aber ich kann ja eigentlich kein php Rolleyes
  Zitieren
#7
ähm, was hast du denn anders? (ich habs mir jetzt nicht so ganz genau angeschaut) aber habe noch keinen unterschied gefunden!
[Bild: style1,Webmaster-Markt-dot-com.png]
  Zitieren
#8
$sqlab .= "('','$spielername', '$position', '$ip') ";

ich glaube das wars aber ich finde mich darin nicht so zurecht Big Grin

wenn er noch eine spalte am anfang hat wo immer der eintrag mitgezählt hat (hatte ich in meinem eigenen forum auch) dann muss glaube ich '' zu dem script geschrieben werden sonst zählt er die irgendwie falsch.
Rolleyes
  Zitieren
#9
also ich verstehe eigententlich überhaupt nicht was du meinst! *ggg* Rolleyes
meinst du den eindeutigen index (also das so eine nummer ist die jeweils nur einmal vorkommen darf?) unique oda sowas....

naja tobi kannst ja beide versuchen.... schreib dann ob es geht! :-)
[Bild: style1,Webmaster-Markt-dot-com.png]
  Zitieren
#10
Also erstmal, ja, ich meine so ein Anzahl der Posts Feld, welches keinen Wert verlangt, sondern auf auto-Inkrement läuft.

Dann muss ich sagen, es hat geklappt, als ich das in Anführungszeichen gesetzt habe, bloß Mist, das jetzt nicht die Variablenwerte, sondern einfach die Variablennamen z.B. "$spielername" in die Felder geschrieben werden ?(

Grüße
Tobi
  Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 3 Gast/Gäste