Richtig, da steht ja auch laut adresso.de
Und genau deswegen einfach direkt weglassen. Das sind unnötige Angaben, die einen normalen User hier nur verwirren.
Richtig, da steht ja auch laut adresso.de
Und genau deswegen einfach direkt weglassen. Das sind unnötige Angaben, die einen normalen User hier nur verwirren.
Dir ist bewusst, das die Schätzungen von adresso extrem unnütz sind, oder? (Die spiegeln nicht den wirklichen Wert wieder. Dies sind Schätzungen unter bestimmten Voraussetzungen.)
Chrome in der aktuellsten Version.
Durch Zufall einen kleinen Fehler gefunden. Bild angehangen. Sollte selbsterklärend sein.fail.PNG
Also für sowas sind Shop-System wie Magento, OS Commerce etc. viel zu groß. Schau mal ob es bei Themeforest ein PHP Skript gibt.
Werde erstmal ein paar sammeln und dann antworten
Aktuell kann noch ein Projekt gesponsert werden.
Ich habe auf der ersten Seite Links zu Seiten verlinkt, die Dich in das Grundwissen von MySQL einweisen.
Ich glaube es macht hier keinen Sinn, das Thema weiter breitzuschlagen. Leute die sich wirklich mit der Programmierung beschäftigen, werden diese Fehler auf Dauer sowieso nicht machen.
Nur weil es keine Probleme gerade verursacht, heißt es noch lange nicht, dass es richtig ist. Es ist z.b. so, dass viele Compiler solche Fehler automatisch berichtigen, es bei anderen aber zu einer entsprechenenden Fehlermeldung kommen kann.
Das gleiche ist bei My(SQL) der Fall.
Aber BlackAce hätte es ja nicht besser sagen können. Mir ging es nur darum, solches gefährliche Halbwissen zu unterbinden.
Sie sind von der Syntax her komplett falsch.
' ' für Strings bzw. Texte
` ` für Felder die auch SQL Anweisungen sein können
Das es funktioniert, macht die Sache nicht richtig.
Ich sage ja, solche Fehler werden meistens selber korrigiert. Aber gibt genug Lesestoff auf der Seite davor.
Poste bitte mal ein Beispiel, bei dem ein vorhandener, optional gesetzter Tick, in MySQL, einen Fehler erzeugt.Das dürfte ja kein Problem sein, wenn es so oft vorkommt.
Ansonsten solltest du von deiner Aussage, dass es falsch ist, Abstand nehmen. Falsch ist es in gepostetem Code ohnehin nicht.
Meiner Erfahrung nach kommt es fast immer zu Fehlern durch fehlende Ticks, daher wie gesagt die Empfehlung für Anfänger, die Ticks immer zu setzen. Das heißt ja im Umkehrschluss nicht, dass man ihnen nicht erklärt, dass sie optional sind. Es fängt nur nicht jeder als Profi an, daher gilt Anfangs erst mal, Fehler so gut wie möglich zu vermeiden. Das ist meine Meinung und Erfahrung.
Ich will die Diskussion hier nicht ausarten lassen. Als Beispiel nenne ich hier mal beliebte JOIN-Statements, wo oft der Fehler gemacht werden, die ohne Backticks nicht passieren würden. Es geht hier um das falsche setzen von Backticks.
Das wird Dir einen Fehler ausgeben
Und die Lösung wäre
das zieht sich in mehreren Situationen durch. Ebenfalls setzen viele auch Backticks anstatt Anführungszeichen.
Und verstehe nicht meinen Satz falsch, ich sagte, dass es desöfteren vorkommt. Hier scheinst Du mich wohl falsch verstanden zu haben.
Ich sage mal so, wenn man My(SQL) an sich nicht verstanden hat, sowie was Schlüsselwörter sind, ist das in meinen Augen eher ein Grundlegendes Problem. Ich sage mal so, es ist nicht falsch, da habe ich mich ungenau ausgedrückt, sondern einfach nicht von so My(SQL) vorgesehen. Du darfst nicht vergessen, das My(SQL) an sich auch viele Syntax-Fehler ohne eine Fehlermeldung bereinigt.
Ich wollte hier keine Diskussion anstoßen, und klinke mich hier auch aus. Aber ich wollte eigentlich nur mal klarstellen, was eigentlich Backticks und deren Verwendung ist.
Das ist das, was ich in einem anderen Thread geschrieben habe. Eine "bessere" Lösung wäre die Einbindung des WCF, aber sicherer ist diese nicht. Sie ist definitiv komfortabler als meine jetzige. Aber hier ging es auch nur um den Gedankengang wie man soetwas lösen könnte. Auf diese Frage bin ich auch in meinem Post ja eingegangen. Die Sicherheit steht und fällt mit der Absicherung der Server und Verbindung.
Ich lese da nichts von einer API. Wenn Du das Einbinden spezieller Klassen meinst, ist das eher das Gegenteil einer API.
WBB hat eine eigene art von "API", da braucht man keine SQL Anfragen selber an die DB senden/aufrufen. Diese weiße ist einfach nicht zu empfehlen.
Habe diesbezüglich nichts bei Google gefunden. Wäre gut, wenn Du mich da mal aufklärst.
Das macht es aber keineswegs falsch.In vielen Fällen sind sie eben optional.
Wenn es deine Meinung ist, dann ist das in Ordnung.
Ich hingegen empfehle es, vor allem MySQL Anfängern, die ` und ' zu nutzen, um Fehler zu vermeiden.
Doch, weil es desöfteren von My(SQL) Syntax Fehler auspucken kann. Steht aber alles in den Links die ich gepostet habe.
Ich bin der Meinung, wenn man jemand was erklärt, dann auch nach gewissen Standards. (Solche Sachen sind in so.g. Guide-lines geregelt.)
Nein.
Sowohl die ` bei den Spaltenbezeichnern, als auch die ' bei den Werten sind ein Garant dafür, dass es auf jeden Fall klappt, da ein Wert als String (z.B.) ohne ' nicht funktioniert, und eine Spalte die z.B. Alter heißt ohne ` auch nicht funktioniert. Es ist daher zu empfehlen, wenn man sicher gehen will, diese immer zu setzen.
Dann lies die MySQL Dokumentation nochmals. Vor allem Stichworte ANSI-MySQL, etc.
Am besten auch hier mal lesen: https://www.sitepoint.com/comm…useful-information/2716/4
Aber ist nur meine Meinung.
Nein, du hattest '&f' stehen, es muss aber '%f' heißen.Die Ticks sind dort schon richtig.
Aber du kannst die drei Queries zu einem zusammenführen, mache es so:
public OnPlayerBuyCar(playerid,Model,Preis,Autohaus)//CARSYS{ if(IsPlayerConnected(playerid) && !Dtc_PlayerHaveCar[playerid][Dtc_PlayerKey[playerid]]) { CallRemoteFunction("M_GivePlayerMoney","id",playerid,-Preis); Gas[Model] = GetGasMax(GetVehicleModel(Model)); SetParkPlatz(playerid,Autohaus); new name[MAX_PLAYER_NAME], str[700], x = Dtc_PlayerKey[playerid]; GetPlayerName(playerid, name, sizeof name); mysql_format(handle, str, sizeof(str), "INSERT INTO `carsystem` (`CarOwner`) VALUES ('%s_%d');", name, x); mysql_pquery(handle, str); format(str, sizeof(str), "UPDATE `carsystem` SET `CarModel`='%d', `CarPos_X`='%f', `CarPos_Y`='%f', `CarPos_Z`='%f', `CarPos_A`='%f', `CarNitro`='0', `CarHyd`='0', `CarWheel`='0', `CarAusp`='0'", Model, PlayerCar[playerid][x][CarPos_x], PlayerCar[playerid][x][CarPos_y], PlayerCar[playerid][x][CarPos_z],PlayerCar[playerid][x][CarRotate]); format(str, sizeof(str), "%s, `CarSideL`='0', `CarSideR`='0', `CarFB`='0', `CarRB`='0', `CarSpoiler`='0', `CarRoof`='0', `CarHood`='0', `CarVents`='0', `CarLamps`='0'",str); format(str, sizeof(str), "%s, `CarPJ`='0', `CarC1`='0', `CarC2`='0', `Preis`='%d', `Neon`='0' , `Plate`='0', `Number`='GBN-0', `Gesperrt`='0', `Sperrpreis`='0', `Kralle`='0' WHERE `CarOwner` = '%s_%d'", str, Preis, name, x); mysql_pquery(handle, str); OnPlayerCarLogin(playerid); printf("OnPlayerBuyCar (%s_%d)",name,x); } return 1;}
Das spart Ressourcen.
Auch nochmal dazu, die Ticks sind einfach falsch. Genauso wie die Anführungszeichen..
Ok, sehr komisch. Was bekommst Du als Ergebnis, wenn Du kein Order in die Abfrage machst?
Ich denke mal es ist eher Ansichtssache was besser ist, ich finde meine Methode angenehmer (direkte Verbindung zum WBB 4 = Cache wird aktualisiert, alles nötige in der Datenbank wird geändert, keine Angaben von MySQL Daten, keine Änderung vom Code nötig sollte WoltLab mal was ändern).
Von der Leistung her ist beides gleich schnell, abgesehen das SyncHTTP wohl eher ein Nachteil wäre.
Ich habe nur vorgeschlagen eine Include zu machen, wenn keine Interesse daran besteht dann lass ich es einfach sein.
Das was ich vor hatte habe ich fertig, wollte nur ein paar Funktionen haben da ich kein funktionierendes Skript/Include gefunden habe
dass direkt mit WBB4 connectet ohne Angaben zu Forendaten (MySQL, WBB Installationsnummer oder sonstiges).
Also, da sind ein paar Sachen die mich persönlich an Deinen Aussagen stören.
SyncHTTP ist eine verbesserte Version zu dem normalen SA:MP kram.
Ebenfalls könnte man sogar meine Version einfach, ohne zusätzliche Eingaben an das WBB anpassen. (Einfach WCF inkludieren, somit müsste man auch manuell keine Dateien mehr aktualisieren.)
Aber jeder kann es ja so machen, wie er möchte.
OK, ich dachte immer dass das egal wäre. Na gut, habe ich wieder was dazu gelernt.
Ebenfalls möchte ich noch hinzufügen, was viele ebenfalls falsch interpretieren. Die sog. Backticks werden nur eingesetzt, sofern man von MySQL sog. Schlüsselwörter als Tabelle oder Felder nutzt. (MySQL reserviert einige Wörter für sich und können nur anhand der Backticks als Tabelle bzw. Feld gekennzeichnet werden!)
Deswegen sollte man immer darauf achten, keine Schlüsselwörter als Bennenung für Felder bzw. Tabellen zu nehmen.