Mein Problem ist, dass der folgende stock nicht funktioniert.
stock CreateVehicleForPlayer(Besitzer, Model, Farbe1, Farbe2, Tueren, Float:X, Float:Y, Float:Z, Float:A, Respawn, Nummernschild[])
{
new query[512], Besitzer2[MAX_PLAYER_NAME];
GetPlayerName(Besitzer, Besitzer2, MAX_PLAYER_NAME);
mysql_real_escape_string(Besitzer2, Besitzer2);
format(query, sizeof(query), "INSERT INTO `grra` (`Model`, `Farbe1`, `Farbe2`, `Tueren`, `PosX`, `PosY`, `PosZ`, `PosA`, `Respawn`) VALUES ('%d', '%d', '%d', '%d', '%f', '%f', '%f', '%f', '%d')", Model, Farbe1, Farbe2, Tueren, X, Y, Z, A, Respawn);
mysql_query(query);
format(query, sizeof(query), "UPDATE `grra` SET `Besitzer` = '%s' WHERE `PosX` = '%f'", Besitzer2, X);
mysql_query(query);
format(query, sizeof(query), "UPDATE `grra` SET `Nummernschild` = '%s' WHERE `PosX` = '%f'", Nummernschild, X);
mysql_query(query);
mysql_free_result();
AutoLaden(Besitzer);
return true;
}
MySQL Fehler
- Artus
- Geschlossen
- Erledigt
-
-
schalte den MySQL Debug ein und dann poste den Log
Außerdem brauch man free_result nur wenn man SELECT macht -
783115 Zeilen ! Dafuq? --> Sind das für die paar Minuten immer so viele Logzeilen?
Ich editiere gleich mal eher das Ende hier hin, wo ich den Befehl ausprobiert habe.
[01:13:18] CMySQLHandler::EscapeString(Exp); - Escaped 3 characters to Exp.
[01:13:18] >> mysql_real_escape_string( Connection handle: 1 )
[01:13:18] CMySQLHandler::EscapeString(Name); - Escaped 4 characters to Name.
[01:13:18] >> mysql_real_escape_string( Connection handle: 1 )
[01:13:18] CMySQLHandler::EscapeString(); - Escaped 0 characters to .
[01:13:18] >> mysql_query( Connection handle: 1 )
[01:13:18] CMySQLHandler::Query(UPDATE `grrs` SET `Exp` = '0' WHERE `Name` = '') - Successfully executed.
[01:13:18] >> mysql_real_escape_string( Connection handle: 1 )
[01:13:18] CMySQLHandler::EscapeString(grrs); - Escaped 4 characters to grrs.
[01:13:18] >> mysql_real_escape_string( Connection handle: 1 )
[01:13:18] CMySQLHandler::EscapeString(Expzeit); - Escaped 7 characters to Expzeit.
[01:13:18] >> mysql_real_escape_string( Connection handle: 1 )
[01:13:18] CMySQLHandler::EscapeString(Name); - Escaped 4 characters to Name.
[01:13:18] >> mysql_real_escape_string( Connection handle: 1 )
[01:13:18] CMySQLHandler::EscapeString(); - Escaped 0 characters to .
[01:13:18] >> mysql_query( Connection handle: 1 )
[01:13:18] CMySQLHandler::Query(UPDATE `grrs` SET `Expzeit` = '0' WHERE `Name` = '') - Successfully executed.
[01:13:18] >> mysql_real_escape_string( Connection handle: 1 )
[01:13:18] CMySQLHandler::EscapeString(grrs); - Escaped 4 characters to grrs.
[01:13:18] >> mysql_real_escape_string( Connection handle: 1 )
[01:13:18] CMySQLHandler::EscapeString(Fraktion); - Escaped 8 characters to Fraktion.
[01:13:18] >> mysql_real_escape_string( Connection handle: 1 )
[01:13:18] CMySQLHandler::EscapeString(Name); - Escaped 4 characters to Name.
[01:13:18] >> mysql_real_escape_string( Connection handle: 1 )
[01:13:18] CMySQLHandler::EscapeString(); - Escaped 0 characters to .
Die letzten 25 Zeilen -
Query(UPDATE `grrs` SET `Expzeit` = '0' WHERE `Name` = '')
was fällt dir auf? -
-
Die WHERE Anweisung geht nicht...
er kann nicht Updaten da er nicht weiß was er updaten sollDas solltest du in beacht haben...
-
[01:25:36] CMySQLHandler::FreeResult() - Result was successfully free'd.
[01:25:51] >> mysql_real_escape_string( Connection handle: 1 )
[01:25:51] CMySQLHandler::EscapeString(Python); - Escaped 6 characters to Python.
[01:25:51] >> mysql_query( Connection handle: 1 )
[01:25:51] CMySQLHandler::Query(INSERT INTO `grra` (`Model`, `Farbe1`, `Farbe2`, `Tueren`, `PosX`, `PosY`, `PosZ`, `PosA`, `Respawn`) VALUES ('522', '6', '0', '0', '2204.454589', '1848.268432', '10.820312', '85.926658', '300')) - An error has occured. (Error ID: 1054, Unknown column 'Farbe1' in 'field list')
[01:25:51] >> mysql_query( Connection handle: 1 )
[01:25:51] CMySQLHandler::Query(UPDATE `grra` SET `Besitzer` = `Python` WHERE `PosX` = '2204.454589') - An error has occured. (Error ID: 1054, Unknown column 'Python' in 'field list')
[01:25:51] >> mysql_query( Connection handle: 1 )
[01:25:51] CMySQLHandler::Query(UPDATE `grra` SET `Nummernschild` = `Python` WHERE `PosX` = '2204.454589') - An error has occured. (Error ID: 1054, Unknown column 'Python' in 'field list')
[01:25:54] >> mysql_real_escape_string( Connection handle: 1 )
[01:25:54] CMySQLHandler::EscapeString(grrs); - Escaped 4 characters to grrs.
[01:25:54] >> mysql_real_escape_string( Connection handle: 1 )
Da haben wir den Error-SalatError ID: 1054, Unknown column 'Python' in 'field list'
Error ID: 1054, Unknown column 'Farbe1' in 'field list' -
Du musst die ` ` zu ' ' machen, die die nach dem = stehen. (Python)
Und Farbe1 ist wohl nicht definiert in deiner Datenbank.
-
Es gibt die Felder in der Tabelle nicht
-
Farbe1 war falsch das stimmt, aber "Besitzer" existiert. Und der soll ja Python in Besitzer schreiben.
-
Das kannst du auch freundlicher sagen. Aber er sollte das schon machen, weil
SET `Besitzer` = `Python`
falsch ist. Es muss
SET `Besitzer` = 'Python'
heißen. Das hat er ja bei den anderen auch so gemacht.EDIT: War an Beavis gerichtet, dessen Post weg ist.
-
Entschuldigung Sollte nicht unfreundlich rüberkommen.
Bin gerade voll froh, dass hier Leute sind wie ihr.
Okay, erneuter Test
[01:38:55] CMySQLHandler::Query(INSERT INTO 'grra' ('Besitzer', 'Model', 'Farbe_1', 'Farbe_2', 'Tueren', 'PosX', 'PosY', 'PosZ', 'PosA', 'Respawn', 'Nummernschild') VALUES ('Python', '522', '6', '0', '0', '2202.324218', '1848.419189', '10.820312', '89.373367', '300', 'Python')) - An error has occured. (Error ID: 1064, 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 ''grra' ('Besitzer', 'Model', 'Farbe_1', 'Farbe_2', 'Tueren', 'PosX', 'PosY', 'Po' at line 1) -
Du darfst bei grra die ` nicht durch ' ersetzen, sondern nur bei deiner Where Abfrage.
/EDIT: Hier nochmal die erklärung wann man was nutzt in kurzform:
Die ` werden nur bei Tabellen Namen genommen. Strings die in Tabellen eingetragen / abgefragt werden sollen brauchen ein 'SQLINSERT INTO `grra` ('Besitzer', 'Model', 'Farbe_1', 'Farbe_2', 'Tueren', 'PosX', 'PosY', 'PosZ', 'PosA', 'Respawn', 'Nummernschild') VALUES ('Python', '522', '6', '0', '0', '2202.324218', '1848.419189', '10.820312', '89.373367', '300', 'Python')
Gruß, Zunno
-
Artus, das war nicht an dich gerichtet.
Der andere Post war einfach weg.Und nicht alle ersetzen sondern nur genau an der Stelle die ich geschrieben hatte. Kann dir via Handy leider nicht den ganzen PAWN Code geben, das würde ewig dauern.
Also nur da wo ich es geschrieben hab.Zunno: Ich meine die Spalten müssen auch das ` haben.
EDIT: An den Post unten:
Ja, dann hab ich richtig gedacht, spalten brauchen auch das `. -
Erledigt und getestet. Derselbe Error mit der Syntax erscheint.
So sieht es in meinem Script derzeit aus:
format(query, sizeof(query), "INSERT INTO `grra`('Besitzer','Model','Farbe_1','Farbe_2','Tueren','PosX','PosY','PosZ','PosA','Respawn','Nummernschild') VALUES ('%s', '%d', '%d', '%d', '%d', '%f', '%f', '%f', '%f', '%d', '%s')", Besitzer2, Model, Farbe1, Farbe2, Tueren, X, Y, Z, A, Respawn, Nummernschild);
Dann probiere ich es mit diesen schrägen Teil nochmal in den Spalten ausServer braucht dank dem Debug immer paar Minuten bis er da ist
-
Genau Spalten waren es Ich wusste das irgendwas fehlt, aber es ist mir gerade nicht eingefallen
Aber hier ist es auch nochmal leicht beschrieben.
http://dev.mysql.com/doc/refman/5.0/en/identifiers.html/EDIT:
Mein Query oben hat auch nen Fehler.
Natürlich muss es so sein:SQLformat(query, sizeof(query), "INSERT INTO `grra` (`Besitzer`,`Model`,`Farbe_1`,`Farbe_2`,`Tueren`,`PosX`,`PosY`,`PosZ`,`PosA`,`Respawn`,`Nummernschild`) VALUES ('%s', '%d', '%d', '%d', '%d', '%f', '%f', '%f', '%f', '%d', '%s')", Besitzer2, Model, Farbe1, Farbe2, Tueren, X, Y, Z, A, Respawn, Nummernschild);
-
Super danke!
Das speichern klappt. Bei dem Rotationswert hat er einen integer, statt einem Float hineingeschrieben, obwohl im Script alles auf Float gestellt war.
Naja. Teste das ganze jetzt.
Nochmals vielen vielen Dank an euch!
Vor allem um die Uhrzeit
Ihr seid einfach
/////////////
Nächstes Problem.
Habe jetzt das Fahrzeug mit dem Befehl eingefügt und füge jetzt noch ein anderes ein.
Aber irgendwie speichert er jetzt das 1. Fahrzeug einfach zum 2. mal ein.
Eine einfache Kopie.
stock CreateVehicleForPlayer(Besitzer, Model, Farbe1, Farbe2, Tueren, Float:X, Float:Y, Float:Z, Float:A, Respawn, Nummernschild[])
{
new query[1024], Besitzer2[MAX_PLAYER_NAME];
GetPlayerName(Besitzer, Besitzer2, MAX_PLAYER_NAME);
mysql_real_escape_string(Besitzer2, Besitzer2);
format(query, sizeof(query), "INSERT INTO `grra`(`Besitzer`,`Model`,`Farbe_1`,`Farbe_2`,`Tueren`,`PosX`,`PosY`,`PosZ`,`PosA`,`Respawn`,`Nummernschild`) VALUES ('%s', '%d', '%d', '%d', '%d', '%f', '%f', '%f', '%f', '%d', '%s')", Besitzer2, Model, Farbe1, Farbe2, Tueren, X, Y, Z, A, Respawn, Nummernschild);
mysql_query(query);
AutoLaden(Besitzer);
return true;
}stock AutoLaden(playerid)
{
for(new i=0; i!=MAX_VEHICLES; i++)
{
if(!strcmp(SpielerDaten[playerid][pName], AutoDaten[i][aBesitzer]) && strlen(AutoDaten[i][aBesitzer]))
{
DestroyVehicle(i); // Fahrzeug wird auch nicht zerstört, welches schon da ist. --> Fahrzeuge werden bei OnGameModeInit erstellt.
format(AutoDaten[i][aBesitzer],64,mysql_GetString("grra", "Besitzer", "Besitzer", SpielerDaten[playerid][pName]));
AutoDaten[i][aModel] = mysql_GetInt("grra", "Model", "Besitzer", SpielerDaten[playerid][pName]);
AutoDaten[i][aFarbe1] = mysql_GetInt("grra", "Farbe_1", "Besitzer", SpielerDaten[playerid][pName]);
AutoDaten[i][aFarbe2] = mysql_GetInt("grra", "Farbe_2", "Besitzer", SpielerDaten[playerid][pName]);
AutoDaten[i][aTueren] = mysql_GetInt("grra", "Tueren", "Besitzer", SpielerDaten[playerid][pName]);
AutoDaten[i][aPosX] = mysql_GetFloat("grra", "PosX", "Besitzer", SpielerDaten[playerid][pName]);
AutoDaten[i][aPosY] = mysql_GetFloat("grra", "PosY", "Besitzer", SpielerDaten[playerid][pName]);
AutoDaten[i][aPosZ] = mysql_GetFloat("grra", "PosZ", "Besitzer", SpielerDaten[playerid][pName]);
AutoDaten[i][aPosA] = mysql_GetFloat("grra", "PosA", "Besitzer", SpielerDaten[playerid][pName]);
AutoDaten[i][aRespawn] = mysql_GetInt("grra", "Respawn", "Besitzer", SpielerDaten[playerid][pName]);
format(AutoDaten[i][aNummernschild],16,mysql_GetString("grra", "Nummernschild", "Besitzer", SpielerDaten[playerid][pName]));
AutoDaten[i][aID] = AddStaticVehicleEx(AutoDaten[i][aModel], AutoDaten[i][aPosX], AutoDaten[i][aPosY], AutoDaten[i][aPosZ], AutoDaten[i][aPosA], AutoDaten[i][aFarbe1], AutoDaten[i][aFarbe2], AutoDaten[i][aRespawn]);
SetVehicleNumberPlate(i, AutoDaten[i][aNummernschild]);
}
}
return 1;
}
Wo könnten die Fehler liegen?P.S.:
Der Befehl
ocmd:pAuto(playerid, params[])
{
if(SpielerDaten[playerid][pAdmin] >= 3)
{
new Besitzer, Model, Farbe1, Farbe2, Tueren, Respawn, Nummernschild[16], Float:X, Float:Y, Float:Z, Float:A;
if(sscanf(params, "dddddds[16]", Besitzer, Model, Farbe1, Farbe2, Tueren, Respawn, Nummernschild)) return SendClientMessage(playerid, Rot, "Benutzung: /pAuto [ID] [Model] [Farbe1] [Farbe2] [Tueren] [Respawn] [Nummernschild]");
GetPlayerPos(playerid, X, Y, Z);
GetPlayerFacingAngle(playerid, A);
CreateVehicleForPlayer(Besitzer, Model, Farbe1, Farbe2, Tueren, X, Y, Z, A, Respawn, Nummernschild);
}
return 1;
} -
breadfish.de
Hat das Thema geschlossen.