Vorbereitete Anweisungen und Escaping: Ein Balanceakt
Muss man bei der Verwendung vorbereiteter Anweisungen in PHP immer noch mysql_real_escape_string() verwenden, um dies zu verhindern? SQL-Injections? Lassen Sie uns eine bestimmte Abfrage und ihre Implementierung untersuchen, um diese Frage zu beantworten.
Abfrage und Implementierung
<code class="php">$consulta = $_REQUEST["term"] . "%"; $sql = $db->prepare('select location from location_job where location like ?'); $sql->bind_param('s', $consulta); $sql->execute(); $sql->bind_result($location); $data = array(); while ($sql->fetch()) { $data[] = array('label' => $location); } ?> **The Dilemma** The provided query aims to fetch locations that match the term entered in the $_REQUEST["term"] variable. While the usage of a prepared statement is commendable for preventing SQL injections, the implementation raises a query: is mysql_real_escape_string() still necessary in this case? **The Verdict: No, but a Refinement is Suggested** When using prepared statements, as long as they are employed correctly, they effectively shield against SQL injections. In this instance, mysql_real_escape_string() is redundant. However, a minor improvement can enhance the code's clarity and efficiency. Rather than using bind_param('s', $consulta), it's more straightforward to pass parameters through the execute method, especially when utilizing the '?' placeholder. The updated code would be: </code>
$sql->execute([$consulta]);
Warum es Matters
Vorbereitete Anweisungen mit Parameterbindung stellen sicher, dass externe Daten die SQL-Abfrage nicht manipulieren können. Bedenken Sie jedoch, dass die SQL-Parameterbindung allein keine sichere Anzeige in HTML gewährleistet. Dafür ist es wichtig, Funktionen wie htmlspecialchars() zu verwenden, bevor die Abfrageergebnisse ausgegeben werden.
Das obige ist der detaillierte Inhalt vonMachen vorbereitete Anweisungen die Notwendigkeit von „mysql_real_escape_string()' in PHP überflüssig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!