PHP & MySQL Syntax Probleme

Ich wollte mir vor kurzem mal wieder was in PHP mit MySQL zusammenbasteln.
Allerdings hab ich hinterher immer diese netten Syntax Fehler //Ironie off

Ich hoffe ihr könnt mir echt weiterhelfen weil ich mir keinen Rat mehr weiß.

Der Error den ich bekomme

Meine Datei

[code]

<? $idd=$_POST['id']; require_once('config.php'); $query = "'INSERT INTO `buffs` (`charid`, `skillid`, `skilllvl`, `abilityType1`, `ability1`, `abilityType2`, `ability2`, `abilityType3`, `ability3`, `remainingTime`) VALUES ("'.$idd.'", '148', '10', '63', '140', '0', '0', '0', '0', '3600000'), ("'.$idd.'", '147', '10', '27', '50', '0', '0', '17037000', '17036804', '3600000'), ("'.$idd.'", '52', '20', '3', '20', '0', '0', '0', '0', '3600000'), ("'.$idd.'", '50', '20', '2', '20', '0', '0', '0', '0', '3600000'), ("'.$idd.'", '46', '20', '35', '210', '0', '0', '0', '0', '3600000'), ("'.$idd.'", '115', '20', '14', '12', '0', '0', '0', '0', '3600000'), ("'.$idd.'", '20', '20', '24', '500', '0', '0', '0', '0', '3600000'), ("'.$idd.'", '146', '10', '26', '50', '0', '0', '0', '0', '3600000'), ("'.$idd.'", '116', '20', '47', '20', '0', '0', '0', '0', '3600000'), ("'.$idd.'", '53', '20', '1', '20', '0', '0', '0', '0', '3600000'), ("'.$idd.'", '49', '20', '4', '40', '0', '0', '0', '0', '3600000'), ("'.$idd.'", '114', '20', '11', '30', '0', '0', '0', '0', '3600000')'"; mysql_query($query); echo "



You character $cname was succesfully buffed


"; ?>[/code]

Schau dir mal den Mist an den du bei $query mit den " und ’ verbrochen hast.
Das erste und das letzte sind irgendwie unnötig. Wozu in einen String nochmal einen String verpacken.

Hab ihn jetzt soweit gebracht:

Parse error: syntax error, unexpected T_STRING in /opt/lampp/htdocs/tftf/buffme/port.php on line 4

[code]<?
$idd=$_POST[‘id’];
require_once(‘config.php’);
$query=INSERT INTO buffs (charid, skillid, skilllvl, abilityType1, ability1, abilityType2, ability2, abilityType3, ability3, remainingTime) VALUES
(.$idd., 148, 10, 63, 140, 0, 0, 0, 0, 3600000),
(.$idd., 147, 10, 27, 50, 0, 0, 17037000, 17036804, 3600000),
(.$idd., 52, 20, 3, 20, 0, 0, 0, 0, 3600000),
(.$idd., 50, 20, 2, 20, 0, 0, 0, 0, 3600000),
(.$idd., 46, 20, 35, 210, 0, 0, 0, 0, 3600000),
(.$idd., 115, 20, 14, 12, 0, 0, 0, 0, 3600000),
(.$idd., 20, 20, 24, 500, 0, 0, 0, 0, 3600000),
(.$idd., 146, 10, 26, 50, 0, 0, 0, 0, 3600000),
(.$idd., 116, 20, 47, 20, 0, 0, 0, 0, 3600000),
(.$idd., 53, 20, 1, 20, 0, 0, 0, 0, 3600000),
(.$idd., 49, 20, 4, 40, 0, 0, 0, 0, 3600000),
(.$idd., 114, 20, 11, 30, 0, 0, 0, 0, 3600000);
mysql_query($query);
echo “Your Character ID is $idd”;
echo "<p align=“center” style=“font-family:Verdana;font-size:20px;”>

You character $cname was succesfully buffed


"; ?>[/code]

Das sieht aus, als ob du statt dem Hochkomma 8auf der Raute-Raste die Akzentzeichen über der Sterntaste (´ und `) verwendest…

Siehe unten

Ok ich bin schonmal nen Stück weiter.

Your Character ID is 2161
You character was succesfully buffed

Problem…

Es wird nichts in die DB eingetragen.
Aktueller Code

[code]<?
$idd=$_POST[‘id’];
require_once(‘config.php’);
$query=‘INSERT INTO buffs (charid, skillid, skilllvl, abilityType1, ability1, abilityType2, ability2, abilityType3, ability3, remainingTime) VALUES
(".$idd.", 148, 10, 63, 140, 0, 0, 0, 0, 3600000),
(".$idd.", 147, 10, 27, 50, 0, 0, 17037000, 17036804, 3600000),
(".$idd.", 52, 20, 3, 20, 0, 0, 0, 0, 3600000),
(".$idd.", 50, 20, 2, 20, 0, 0, 0, 0, 3600000),
(".$idd.", 46, 20, 35, 210, 0, 0, 0, 0, 3600000),
(".$idd.", 115, 20, 14, 12, 0, 0, 0, 0, 3600000),
(".$idd.", 20, 20, 24, 500, 0, 0, 0, 0, 3600000),
(".$idd.", 146, 10, 26, 50, 0, 0, 0, 0, 3600000),
(".$idd.", 116, 20, 47, 20, 0, 0, 0, 0, 3600000),
(".$idd.", 53, 20, 1, 20, 0, 0, 0, 0, 3600000),
(".$idd.", 49, 20, 4, 40, 0, 0, 0, 0, 3600000),
(".$idd.", 114, 20, 11, 30, 0, 0, 0, 0, 3600000)’;
mysql_query($query) or die("
".mysql_error().“
you can not be buffed !”);
echo “Your Character ID is $idd”;
echo "<p align=“center” style=“font-family:Verdana;font-size:20px;”>

You character $cname was succesfully buffed


"; ?>[/code]

Es wird kein SQL Fehler ausgegeben.

Was steht denn in dieser ominösen Zeile 2?

Schau mal nen Beitrag über dir das ist der aktuelle Stand der Dinge.

Scheint so richtig zu sein - Existiert ‘irgendwas’ denn auch in der SQL?

Ich geb dir mal den kompletten Code.

config.php

[code]<?php
if(stristr($_SERVER[‘PHP_SELF’], “config.php”)) die(‘asdada’);
$host = “localhost”; // host mysql
$user = “root”; // mysql username
$pass = “bla”; // mysql password
$db = “bla”; // mysql db

mysql_connect($host,$user,$pass) or die(mysql_error());
mysql_select_db($db) or die(mysql_error());
?>[/code]

index.php

[code]

TFTF::Buff-Me

 

HP-Buff-Tool

© Masterluke & Alucard

Account Name
Passwort
[/code]

submit.php

[code]<?php
$name=$_POST[‘nam’];
$pasw=$_POST[‘passw’];

require_once(‘config.php’);

function check_user($name, $pass)
{
$pwd= md5(‘kikugalanet’.$pass);
$sql=“SELECT id FROM accounts WHERE username=’”.$name."’ AND password=’".$pwd."’ LIMIT 1";
$result= mysql_query($sql) or die(mysql_error());
if ( mysql_num_rows($result)==1)
{
$dbuser=mysql_fetch_assoc($result);
return $dbuser[‘id’];
}
else
{
return false;
}
}

if (!check_user($name, $pasw)) {
echo"
<p align=“center” style=“font-family:Verdana;font-size:20px;”>Account Name or password wrong !


<p align=“center”><a href=“index.php”>BACK
";
die();
}

else {
$query =“SELECT charname, id FROM characters WHERE accountname=’”.$name."’ “;
$res = mysql_query( $query ) or die(mysql_error());
if (mysql_num_rows( $res )==0) {
echo”
<p align=“center” style=“font-family:Verdana;font-size:20px;”>Hallo $name,


<p align=“center” style=“font-family:Verdana;font-size:16px;”>You have no characters on this account !
";
die();
}
else {
echo"
<p align=“center” style=“font-family:Verdana;font-size:20px;”>Hallo $name,
<p align=“center” style=“font-family:Verdana;font-size:16px;”>which character do you want to buff ?
<table align=“center” border=“0”>";
$i=0;
while( mysql_fetch_assoc( $res ) ) {
$cname= mysql_result($res, $i, “charname”);
$id=mysql_result($res,$i,“id”);
echo “
<form name=“Port” method=“post” action=“port.php”>

<input name=“id” value=”$id" type=“hidden”>
<td align=“right” width=“150”>$cname
<input name=“teleport” value=“Buff this Character” type=“submit”>


";
$i++;
}
}
}
?> [/code]

port.php

[code]<?
$idd=$_POST[‘id’];
require_once(‘config.php’);
$query=‘INSERT INTO buffs (charid, skillid, skilllvl, abilityType1, ability1, abilityType2, ability2, abilityType3, ability3, remainingTime) VALUES
("$idd.", 148, 10, 63, 140, 0, 0, 0, 0, 3600000),
(".$idd.", 147, 10, 27, 50, 0, 0, 17037000, 17036804, 3600000),
(".$idd.", 52, 20, 3, 20, 0, 0, 0, 0, 3600000),
(".$idd.", 50, 20, 2, 20, 0, 0, 0, 0, 3600000),
(".$idd.", 46, 20, 35, 210, 0, 0, 0, 0, 3600000),
(".$idd.", 115, 20, 14, 12, 0, 0, 0, 0, 3600000),
(".$idd.", 20, 20, 24, 500, 0, 0, 0, 0, 3600000),
(".$idd.", 146, 10, 26, 50, 0, 0, 0, 0, 3600000),
(".$idd.", 116, 20, 47, 20, 0, 0, 0, 0, 3600000),
(".$idd.", 53, 20, 1, 20, 0, 0, 0, 0, 3600000),
(".$idd.", 49, 20, 4, 40, 0, 0, 0, 0, 3600000),
(".$idd.", 114, 20, 11, 30, 0, 0, 0, 0, 3600000)’;
mysql_query($query) or die("
".mysql_error().“
you can not be buffed !”);
echo “Your Character ID is $idd”;
echo "<p align=“center” style=“font-family:Verdana;font-size:20px;”>

You character $cname was succesfully buffed


"; ?>[/code]

Achja ja die DB exsistiert er trägt nur die Daten nicht ein

MySQL lieferte ein leeres Resultat zurück (d. h. null Zeilen). (die Abfrage dauerte 0.0004 sek.)

SQL-Befehl:
SELECT *
FROM buffs
WHERE charid =2161
LIMIT 0 , 30

So ich hab eben mal in die DB geschaut.

Er trägt ein.

Nur eben als CharID 0 was eben nicht stimmt (die Variable stimmt beim echo gibt er die richtige CharID aus).

Sry, jetzt bin ich mit meinem Latein am Ende… so tief bin ich in SQL noch nicht drin.

Hmm wieso trägt er eine Null ein obwohl die Variable stimmt.

Das ist die große Frage.

EDIT: Ich hab mir von phpMyAdmin jetzt mal nen PHP Befehl machen lassen der sieht so aus.

$sql = 'INSERT INTO `buffs` (`charid`, `skillid`, `skilllvl`, `abilityType1`, `ability1`, `abilityType2`, `ability2`, `abilityType3`, `ability3`, `remainingTime`) VALUES' . ' (148, 53, 20, 1, 20, 0, 0, 0, 0, 60704390);';

Hm… Für mich sieht das seltsam aus - Funktioniert es denn?

Es funktioniert soweit.

Nur hab ich in der DB bei CharID eine 0 stehen statt der CharID wo in der Variable gespeichert ist. Ich werd das Script jetzt mal so umschreiben wie phpMyAdmin meint das es richtig ist.

Der komplette Befehl (als CharID mal 0) sieht in PHP so aus laut PMA.

$sql = 'INSERT INTO `buffs` (`charid`, `skillid`, `skilllvl`, `abilityType1`, `ability1`, `abilityType2`, `ability2`, `abilityType3`, `ability3`, `remainingTime`) VALUES (0, 148, 10, 63, 140, 0, 0, 0, 0, 3600000), (0, 147, 10, 27, 50, 0, 0, 17037000, 17036804, 3600000), (0, 52, 20, 3, 20, 0, 0, 0, 0, 3600000), (0, 50, 20, 2, 20, 0, 0, 0, 0, 3600000), (0, 46, 20, 35, 210, 0, 0, 0, 0, 3600000), (0, 115, 20, 14, 12, 0, 0, 0, 0, 3600000), (0, 20, 20, 24, 500, 0, 0, 0, 0, 3600000), (0, 146, 10, 26, 50, 0, 0, 0, 0, 3600000), (0, 116, 20, 47, 20, 0, 0, 0, 0, 3600000), (0, 53, 20, 1, 20, 0, 0, 0, 0, 3600000), (0, 49, 20, 4, 40, 0, 0, 0, 0, 3600000), (0, 114, 20, 11, 30, 0, 0, 0, 0, 3600000);[...]';

Probieren geht über studieren - Wenn phpMyAdmin das so vorschlägt müsste es eigentlich funktionieren. Viel Erfolg - und erzähle uns wie/ob und warum es funktioniert :slight_smile:

Hmm ich bekomms einfach nicht ans laufen.

So sieht der Code vom funktionierendem Teleport Tool aus.

[code]<?
$idd=$_POST[‘id’];
require_once(‘config.php’);
$query = “UPDATE characters SET posX =‘132’, posY =‘129.406’, posZ =‘348’, posWorldID =‘501’ WHERE id =’”.$idd."’ LIMIT 1 “;
mysql_query($query) or die(”
".mysql_error().“
der Char kann nicht teleportiert werden !”);
echo "<p align=“center” style=“font-family:Verdana;font-size:20px;”>

Dein Char $cname wurde erfolgreich teleportiert


"; ?>[/code]

Hm… da bin ich überfragt.

Am besten wartest du bis einer unserer Spezis mal vorbeischaut - Balmung und Michi7x7 sind sehr fit darin, um nur 2 zu nennen…

Ich bin einfach gut alder xD.
Ich als PHP Noob bekomms natürlich ans laufen xD.

So sieht der funktionierende Code aus.

<? $idd=$_POST['id']; require_once('config.php'); $query = "INSERT INTO `buffs` (`charid`, `skillid`, `skilllvl`, `abilityType1`, `ability1`, `abilityType2`, `ability2`, `abilityType3`, `ability3`, `remainingTime`) VALUES (".$idd.", 148, 10, 63, 140, 0, 0, 0, 0, 3600000), (".$idd.", 147, 10, 27, 50, 0, 0, 17037000, 17036804, 3600000), (".$idd.", 52, 20, 3, 20, 0, 0, 0, 0, 3600000), (".$idd.", 50, 20, 2, 20, 0, 0, 0, 0, 3600000), (".$idd.", 46, 20, 35, 210, 0, 0, 0, 0, 3600000), (".$idd.", 115, 20, 14, 12, 0, 0, 0, 0, 3600000), (".$idd.", 20, 20, 24, 500, 0, 0, 0, 0, 3600000), (".$idd.", 146, 10, 26, 50, 0, 0, 0, 0, 3600000), (".$idd.", 116, 20, 47, 20, 0, 0, 0, 0, 3600000), (".$idd.", 53, 20, 1, 20, 0, 0, 0, 0, 3600000), (".$idd.", 49, 20, 4, 40, 0, 0, 0, 0, 3600000), (".$idd.", 114, 20, 11, 30, 0, 0, 0, 0, 3600000)"; mysql_query($query); echo "



You character $cname was succesfully buffed


"; ?>

Jetzt muss ich es nurnoch hinbekommen das die Buffs nicht doppelt in die DB eingetragen werden können und ich bin Happy ^^.

EDIT: Und ihrgendwie ist die Variable $cname verschwunden xD

Das müsste (nach meinen Noob-Erfahrungen) mit Wenn-Dann gehen.
Frag mich jetzt nur nicht nach dem Code dafür. Da müsste ich nachschlagen :smiley:
Aber prinzipiell würde ich es so lösen:

WENN
Buff in der SQL eingetragen
DANN
Echo Fehlermeldung
SONST
Trage Buff in SQL ein