Fehler im SQL-Query

Unicate

Erfahrenes Mitglied
Hallo, ich habe mal wieder ein Problem. Ich lass mir nen Query erstellen, führe diesen aus.
mysql_error() bringt mir nen Fehler:

Code:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; UPDATE puz_groups SET ns_lft = '3' ' at line 1

Wenn ich mir den Query ausgeben lasse und per hand im PHPmyAdmin eingebe, funktioniert er.

hier mal der Quellcode im PHP:

PHP:
$sql = "
LOCK TABLES ".PREFIX."groups WRITE;

UPDATE
  ".PREFIX."groups
SET
  ns_lft = '".($lft+2)."'
WHERE 
  ns_lft > ".$rgt.";

UPDATE 
  ".PREFIX."groups
SET 
  ns_rgt      =  '".($rgt+2)."'
  WHERE ns_rgt      >= ".$rgt.";

INSERT INTO 
  ".PREFIX."groups 
  (id, name, rights, ns_lft, ns_rgt )
VALUES 
  (
  '',
  '".stripslashes(addslashes(utf8_encode($_POST["groupname"])))."',
  '".$rights."',
  '".$rgt.",
  '".$rgt."+1
  );						
UNLOCK TABLES;";
 
Sendet eine Anfrage an MySQL
Anmerkung: Die Anfrage sollte nicht mit einem Semikolon enden.Das läßt vermuten, dass nicht mehrere Anfragen mit einem Aufruf von mysql_query abgesendet werden sollen.

Gruß hpvw
 
Ganz bleede binsch ja noch ni...

PHP:
mysql_query($sql) or die(mysql_error());

mal davon abgesehen, das er mir nen parse error bringen würde und nicht nen mysql error
 
so vielleicht:
Code:
$sql = " 
LOCK TABLES ".PREFIX."groups WRITE; 

$query = mysql_query("UPDATE 
  ".PREFIX."groups 
SET 
  ns_lft = '".($lft+2)."' 
WHERE 
  ns_lft > ".$rgt.""); 

if (!$query) {
   die('Ungültige Abfrage: ' . mysql_error());
}

$query2 = mysql_query("UPDATE 
  ".PREFIX."groups 
SET 
  ns_rgt      =  '".($rgt+2)."' 
  WHERE ns_rgt      >= ".$rgt.""); 

if (!$query2) {
   die('Ungültige Abfrage: ' . mysql_error());
}

INSERT INTO 
  ".PREFIX."groups 
  (id, name, rights, ns_lft, ns_rgt ) 
VALUES 
  ( 
  '', 
  '".stripslashes(addslashes(utf8_encode($_POST["groupname"])))."', 
  '".$rights."', 
  '".$rgt.", 
  '".$rgt."+1 
  );                         
UNLOCK TABLES;";
 
@mckani: versuch mal deinen Code als PHP code hier im Forum darzustellen, dann siehste was de falsch gemacht hast ;)
Waaaa Mutti hilfe wo bin ich hier....

also nochema im Code steht:

PHP:
 $sql = "
LOCK TABLES ".PREFIX."groups WRITE;

UPDATE
  ".PREFIX."groups
SET
  ns_lft = '".($lft+2)."'
WHERE
  ns_lft > ".$rgt.";

UPDATE
  ".PREFIX."groups
SET
  ns_rgt      =  '".($rgt+2)."'
  WHERE ns_rgt      >= ".$rgt.";

INSERT INTO
  ".PREFIX."groups
  (id, name, rights, ns_lft, ns_rgt )
VALUES
  (
  '',
  '".stripslashes(addslashes(utf8_encode($_POST["groupname"])))."',
  '".$rights."',
  '".$rgt.",
  '".$rgt."+1
  );                        
UNLOCK TABLES;"; 
mysql_query($sql) or die(mysql_error());
 
@hpvw: 100 Punkte an den Kandidaten :D

Jetzt funktioniert vielen Dank.

PHP:
unset($sql);
$sql[] = "LOCK TABLES ".PREFIX."groups WRITE;";
$sql[] = "
		UPDATE
			".PREFIX."groups
		SET
			ns_lft = '".($lft+2)."'
		WHERE 
			ns_lft > ".$rgt.";";
$sql[] = "

		UPDATE ".PREFIX."groups
		   SET ns_rgt      =  '".($rgt+2)."'
		 WHERE ns_rgt      >= ".$rgt.";";
		   
$sql[] = "
		INSERT INTO ".PREFIX."groups (id, name, rights, ns_lft, ns_rgt )
				  VALUES (
						'',
						'".stripslashes(addslashes(utf8_encode($_POST["groupname"])))."',
						'".$rights."',
						".$rgt.",
						".$rgt."+1
						 );";
$sql[] = "				
		UNLOCK TABLES;";
foreach($sql as $query)
{
	mysql_query($query) or die(mysql_error());
}
 
Zurück