SQL-Injektion und Problem mit Anführungsstrichen

Also baue ich das folgendermaßen ein:

PHP:
$db = connect_db ();
mysql_query ( "UPDATE table SET `test` = " . mysql_real_escape_string($test), $db );
mysql_close ( $db );
 
Hi,

nee, haargenau so ergibt das keinen Sinn. Wenn die Spalte `test` numerisch ist, was soll dann da mysql_real_escape_string()? Dann solltest Du diesen Wert auf Gültigkeit überprüfen. Wenn die Spalte vom Typ varchar, text o.ä. ist, dann ist die Abfrage syntaktisch falsch, da Strings in MySQL in Hochkommata stehen müssen.

Und Du machst doch wohl hoffentlich nicht für jede einzelne Abfrage einen Connect?

LG
 
Wenn ich den Connect nicht immer wieder wiederhole, führt es bestimmte Sachen gar nicht aus Das Problem hatte ich, als ich einmal 3 Operationen ausgeführt habe, denn da hat er die letzte nicht ausgeführt.

Ich das so schlimm, wenn man immer eine neue Verbindung aufbaut und dann gleich wieder schließt? Also ich habe davon im kompletten Projekt ca. 500...

Wenn ich falsch liege, welche Methode würde es denn noch geben?

Umbauen muss ich alles ja sowieso nochmal...
 
Benutze einfach PDO und Prepared Statements. Das ist wohl die beste Lösung für dein Problem. Allerdings viel Änderungsaufwand, der sich allerdings lohnen dürfte.
 
Wie kann man sich eigentlich ausgeben lassen,
wieviele Datenbankverbindungen zur Zeit bestehen?

Gibts da ein Script o.a.?
 
Hi,

Wenn ich den Connect nicht immer wieder wiederhole, führt es bestimmte Sachen gar nicht aus Das Problem hatte ich, als ich einmal 3 Operationen ausgeführt habe, denn da hat er die letzte nicht ausgeführt.

dann hast Du irgendwas falsch gemacht, vielleicht war beim Aufruf die Variable $db im aktuellen Geltungsbereich nicht gesetzt. Man kann bei mysql_query() den Link übrigens weglassen, wenn man nicht gerade mehrere Verbindungen zu unterschiedlichen Datenbanken offen hat und eine bestimmte verwenden möchte.

Wenn ich falsch liege, welche Methode würde es denn noch geben?

Baue am Anfang des Scriptes die Verbindung auf, fertig.

LG
 
Hmmm ich bin grad beim Umbauen. Fast alles funktioniert nun und auch schneller, allerdings bekomme ich bei manchen folgenden Error:

Code:
Access denied for user 'wwwrun'@'localhost' (using password: NO)

PHP:
$result = mysql_query ( "SELECT * FROM buildings" ) or die ( mysql_error() );
while ( $row = mysql_fetch_assoc ( $result ) ) {
### Schleife ###
}

Mir ist aufgefallen dass fast alle Schleifen nicht funktionieren!?

Das folgende funktioniert wiederum:

PHP:
$row = mysql_fetch_assoc ( mysql_query ( "SELECT `content` FROM config WHERE `name` = '$item'" ) );
An was kann das liegen?
 
Zuletzt bearbeitet:
OK, ich habe den Fehler gefunden. War ein kleiner Denkfehler ;)

So nun wieder zum Problem zurück:

Ich prüfe ohnehin fast überall die Eingaben der User und lasse zum Beispiel nur Zahlen ankommen bzw. prüfe die Eingaben auf Sonderzeichen.

Ich benötige nur eine Absicherung beim Login und beim Versenden von PN`s.

Für diese beiden Sachen kann ich also folgendes nutzen um es abzusichern?

PHP:
mysql_query ( "UPDATE table SET `message` = " . mysql_real_escape_string($message) );
 

Neue Beiträge

Zurück