Sollte mysql_real_escape, um die Variablen zu entkommen, für alle Abfragen an die Datenbank verwendet werden?mysql_real_escape auf Abfragen
Antwort
Ja, escape immer Variablen, die Sie in Abfragen übergeben.
Noch besser, verwenden PDO:
<?php
/* Execute a prepared statement by binding PHP variables */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < :calories AND colour = :colour');
$sth->bindParam(':calories', $calories, PDO::PARAM_INT);
$sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12);
$sth->execute();
?>
Auf diese Weise brauchen Sie nicht mit Flucht zu tun (es sei denn, Sie Fragen haben, die besondere Sorgfalt erfordern). Wenn Sie darauf bestehen, die MySQL-Erweiterung zu verwenden, dann verwenden Sie mysql_real_escape_string()
.
'SELECT * FROM Benutzer WHERE ID = $ ID;' Wie hilft hier die Flucht? –
@ Col.Shrapnel Ich sprach über diese Art von Abfrage. –
Ja, Sie sollten alle Variablen aus Sicherheitsgründen entkommen. Flüchtige Zahlen usw. ändern nichts, so dass es auch kein Problem gibt, ihnen zu entkommen. Sie sollten alles entkommen, da Sie sonst versehentlich eine Variable verpassen könnten. Ich schlage vor, PHP mysql_real_escape_string()
-function oder PDO prepared statements zu verwenden.
Sollten Sie immer Abfrageargumente sichern? Ja.
Sollten Sie immer mysql_real_escape_string
dafür verwenden? Nr
Wenn du gehst nicht prepared statements zu verwenden, sollten Sie mysqli_real_escape
mit (etwas dagegen die i für verbessert) Strings zu kodieren, die NUL
(ASCII 0) enthalten, \n
, \r
, \
, '
, "
und Kontrolle-Z. Zusätzliche Vorsichtsmaßnahmen können jedoch notwendig sein.
ist die aktiv entwickelte mysql-Erweiterung heutzutage. Die alte MySQL-Erweiterung hat nur vereinzelt Bugfixes, wird aber seit einiger Zeit nicht mehr aktiv weiterentwickelt.
Sehen Sie diese zwei Tutorials auf DevZone (aber beachten Sie auch, dass beide Artikel von Internet-Standards alten sind)
Danke ich werde das benutzen. –
- 1. Abfragen auf InternetGetConnectedState
- 2. Abfragen mehrerer Datenbanken auf einmal
- 3. Outlook-Verteilerliste auf Kontaktelemente abfragen
- 4. Abfragen mehrerer Tabellen auf MySQL
- 5. GAE - Abfragen auf sharded Eigenschaften
- 6. Komplexe Abfragen auf Realm Android
- 7. Dynamic „WHERE“ wie Abfragen auf Speicherobjekte
- 8. Sehr langsame SQL-Abfragen auf Varchar-Spalte
- 9. HIVE dz/sub-Abfragen verwirrt auf
- 10. Kann LINQPad SQL-Abfragen auf OData ausführen?
- 11. Anzahl der ausgeführten MySQL-Abfragen auf Seite
- 12. Optimierung mit vielen Abfragen auf Seite
- 13. Zugriff auf VBA - Elterntabellendaten leicht abfragen?
- 14. Setzen aller Abfragen auf rohe = wahr sequelize
- 15. XPath 1.0-Abfragen auf JAXB-Objekte?
- 16. java Hibernate unnötige Abfragen auf losgelöste Objekte
- 17. EntityDataSource ersetzen * mit% Wildcard auf Abfragen
- 18. Wie multy Abfragen auf mysql mit node.js
- 19. Kombination auf 2 Mysql-Abfragen in einem
- 20. Cypher Abfragen als Batch-Operationen auf Neo4j
- 21. Abfragen von mehreren Datenbanken auf SQL Server
- 22. Vorbereitete Anweisungen und ihre Auswirkungen auf Abfragen
- 23. mehrere einfügen Abfragen auf einer Webseite
- 24. Anzeigen von Oracle-Abfragen auf einer Website
- 25. Liste der auf SQL Server ausgeführten Abfragen
- 26. LINQ Abfragen auf möglicherweise unendliche Listen
- 27. JOIN-Abfragen im Vergleich zu mehreren Abfragen
- 28. Parametrisierte Abfragen
- 29. SQLite Abfragen
- 30. oracle9i Abfragen
Nope. mysql_real_escape_string ist nur für die durch Trennzeichen getrennten Strings anwendbar und für nichts anderes nutzbar –
Wer beantwortet diese Fragen? – mario
@mario - wahrscheinlich jemand auf der Suche nach einem Fragezeichen. –