PHP mysql_query("INSERT INTO...) Problem

Web-Macher

Grünschnabel
Hallo,
ich habe ein kleines Problem, das mir wie ein rätsel erscheint.

Ich habe hier mal den Quellcode:
Code:
 if($_POST[todo] == "eintragen")
 {
  if($_POST[msg] && $_POST[betreff])
  {
    $now = time();
    mysql_query("INSERT INTO forum_threads (forum,aenderungs_datum,betreff,datum,user) VALUES
               ('$_REQUEST[forum_id]','$now','$_POST[betreff]','$now','1')");

    $get_id = mysql_insert_id();

    mysql_query("INSERT INTO forum_posts (bezug_thread,post_sort,datum,betreff,msg,user VALUES
               ('$get_id','0','$now','$_POST[betreff]','$_POST[msg]','1')");
               
    //$eintragok = 1;
    //header("Location:showthread.php?thread_id=$_REQUEST[forum_id]&eintragok=1");
	}

  else
    $notallfilled = 1;
 }

Wie Sie sehen habe ich zwei INSERT INTO in diesem Abschnitt. Das erste INSERT wird ausgeführt - der nachfolgende Befehl [$get_id = mysql_insert_id();] auch noch.
Der zweite INSERT Befehl funktioniert gar nicht, als wäre er nicht da.
Es wird nicht einmal '0' oder 'false' zurückgegeben.

Ich hoffe Sie können mir helfen. Danke schon einmal im Vorfeld.
MfG
Web-Macher
 
Versuch mal Folgendes:
PHP:
<?php
	[…]
	if( isset($_POST['todo']) && $_POST['todo'] == 'eintragen' ) {

		if( isset($_POST['msg']) && isset($_POST['betreff']) ) {

			$query = "
				INSERT INTO
				        `forum_threads`
				  SET
				        `forum`            = '".$_REQUEST['forum_id']."',
				        `aenderungs_datum` = NOW(),
				        `betreff`          = '".mysql_escape_string($_POST['betreff'])."',
				        `datum`            = NOW(),
				        `user`             = 1
				";
			mysql_query($query);

			$query = "
				INSERT INTO
				        `forum_posts`
				  SET
				        `bezug_thread` = LAST_INSERT_ID(),
				        `post_sort`    = 0,
				        `datum`        = NOW(),
				        `betreff`      = '".mysql_escape_string($_POST['betreff'])."',
				        `msg`          = '".mysql_escape_string($_POST['msg')."',
				        `user`         = 1
				";
			//	$eintragok = 1;
			//	header('Location:showthread.php?thread_id='.$_REQUEST['forum_id'].'&eintragok=1');

		} else {

			$notallfilled = 1;
		}

	}
	[…]
?>
 
Zuletzt bearbeitet:
Leider funktioniert das auch nicht - wird auch nur beim ersten INSERT ausgeführt. *ratlos*

Frage: was ist mysql_escape_string ?
 
Schau doch in die Befehlsreferenz: [phpf]mysql_escape_string[/phpf]. Und ich empfehle dir, den Fehler von MySQL ausgeben zu lassen, falls einer auftritt. Das erleichtert die Fehlersuche ungemein.
 
Danke. Ja ich blödie - bin auch gerade auf die Idee gekommen den Fehler ausgeben zu lassen.Ergebnis:

"You have an error in your SQL syntax near 'VALUES ('22','0','1107694152','trref','dfdfdf','1')' at line 1"

Es handelt sich um das Script von ganz am Anfang.

Ich konnte leider keinen Fehler entdeken. Was mir auch noch komisch vorkommt, ist das da steht 'at line 1' ()

EDIT: Den Fehler gibt es beim 2. INSERT.

MfG
Web-Macher
 
Es handelt sich hier um einen Syntaxfehler, denke ich

mysql_query("INSERT INTO forum_threads (forum,aenderungs_datum,betreff,datum,user)VALUES ('$_REQUEST[forum_id]','$now','$_POST[betreff]','$now','1')");

PHP:
mysql_query("INSERT INTO forum_threads (forum,aenderungs_datum,betreff,datum,user) VALUES ('".$_REQUEST['forum_id']."','$now','".$_POST['betreff']."','$now','1')");

INSERT INTO bricht ab
- wenn ein LIMIT Befehl intigriert wird
- Versuch wird einen falschen Wert in eine Falsche Spalte einzugeben (IN INT Z.B Buchstaben)
- Wenn eine Spalte nicht vorhanden ist (Auch bei Tippfehler)
- Und manchmal wenn versucht wir eine leere Variable einzugeben!
Dacher vergewisser dich ob
$_REQUEST['forum_id'] usw. einen Wert tragen

Versuch mal vieleicht liegst daran!
Veruche mal diesen Code, und wenn der geht weist obs daran liegt
PHP:
mysql_query("INSERT INTO forum_threads (forum,aenderungs_datum,betreff,datum,user) VALUES ('0','0','0','0','0')");
Vergewisser dich ob du Spaltennaen und Tabellennamen korrekt ausgeschrieben hast!

Im zweiten Insert fehlt dir zudem das ")" vor VALUES
mysql_query("INSERT INTO forum_posts (bezug_thread,post_sort,datum,betreff,msg,user VALUES
('$get_id','0','$now','$_POST[betreff]','$_POST[msg]','1')");

Ausserdem ist die Synax hier auch nicht sehr gut
PHP:
mysql_query("INSERT INTO forum_posts (bezug_thread,post_sort,datum,betreff,msg,user) VALUES
               ('$get_id','0','$now','".$_POST['betreff']."','".$_POST['msg']."','1')");

Im Ganzen:
PHP:
if($_POST['todo'] == "eintragen")
{
if($_POST['msg'] && $_POST['betreff'])
{
$now = time();
{
mysql_query("INSERT INTO forum_threads (forum,aenderungs_datum,betreff,datum,user) VALUES ('".$_REQUEST['forum_id']."','$now','".$_POST['betreff']."','$now','1')");
}
{
$get_id = mysql_insert_id();
}
{
mysql_query("INSERT INTO forum_posts (bezug_thread,post_sort,datum,betreff,msg,user) VALUES
 ('$get_id','0','$now','".$_POST['betreff']."','".$_POST['msg']."','1')");
}              
//$eintragok = 1;
//header("Location:showthread.php?thread_id=$_REQUEST[forum_id]&eintragok=1");
}
else {
    $notallfilled = 1;
}
}

ZUDEM hat bei else das "{" (Schleife auf gefehlt)
 
Zuletzt bearbeitet von einem Moderator:
Danke für Deine Mühe. Ich habe Deine Verbesserungen genutzt - leider funktionierte da immer noch nichts - dann

"Im zweiten Insert fehlt dir zudem das ")" vor VALUES"

Also ")" hinzugefügt und es lief.

DANKE! :) :)
 
Zurück