j4nk3y: Performance MySQL updaten

Beitrag lesen

Hey,

Wenn es keine Funktion gibt, heißt das nicht, dass du die Regeln, die für einen ordnungsgemäßen Identifier gelten, ignorieren darfst. Du musst dir dann eben selbst eine Funktion schreiben, wenn es nicht mit einem simplen str_replace() oder ähnlichem geht. Die eigentliche Frage ist aber: Hast du denn hier die Notwendigkeit, einen Identifier aus einer Variable hinzufügen zu müssen, deren Inhalt potentiell Sonderzeichen enthalten kann - in dem Fall Backticks, die als Begrenzer für Identifier definiert sind? Es wäre in einem solchen Fall auch sinnvoll, die Backticks im Statement nicht zu vergessen.

Eigentlich, kommen die meisten Variablen aus der Datenbank und werden in php gesetzt und kommen nicht durch eine User Eingabe. Aber Anfangs wurde mir gesagt das ich alles ordnungsgemäß Escapen muss, also Escape ich auch einen Intenger.

Vielleicht, wer weiß. Ist das aber ein Schuh, den ich mir anziehen muss?

Nein, aber mich ärgert es einfach immer wieder, wenn etwas kritisiert oder kommentiert wird was nicht ersichtlich ist bzw der Einfachheit gekürzt wurde. Aber wenn ihr lieber 2000 Zeilen PHP code möchtet, dann kann ich auch den Posten.

Ich arbeite nicht mit Transactions, aber das halte ich doch für ein Gerücht. Dazu konnte ich bei meiner kurzen Recherche nichts finden. Wenn es nur darum geht, aus dem Transaktionsmodus wieder rauszukommen, dann kann man auch mysqli_autocommit(true) aufrufen.

Bei einem simplen Select ist das manuelle schließen unnötig, das ist richtig. Wenn man jedoch in einem Script mehrmals die Datenbankverbindung aufbaut und autocommit gerade nicht auf true setzt dann ist das schließen mit commit() respektive rollback() notwendig.

Besonders dann nicht, wenn man weitere Statements ausführen möchte und sie dazu wiederherstellen muss.

Vielleicht. Vielleicht verliere ich aber auch grad die Lust aufgrund dieser schnippischen Antworten auf das eigentliche Problem einzugehen.

Es tut mir Leid, manchmal ärgert es mich nur wenn von allen Seiten von jedem etwas anderes gesagt wird weil jeder seinen Stil über die Jahre entwickelt hat. Und vorallem so etwas wie:

$get_data = $db->prepare(sprintf('SELECT x,y FROM a')); $get_data->execute(); Das sprintf() hat an der Stelle keinen Nutzen.

Das weiß ich auch, dass es so keinen Sinn hat. Auch wenn es gut gemeint war, bei mir kommt nur an: "sprintf(%2$s %1$s %3$s %5$s %4$s, 'zulernen', 'viel', 'du', 'hast', 'noch') junger Padawan". Was ich auch weiß, und wenn es etwas gibt was ich nicht verstehe oder nicht weiß, weil ich es noch nicht gesehen oder gemacht habe, dann frage ich euch. Darum finde ich es immer besser erst einmal auf die Frage zu antworten und sich dann um mögliche schwächen und Fehler des Codes zu kümmern.

Gruß
Jo