Heim > Datenbank > MySQL-Tutorial > Hauptteil

Machen vorbereitete Anweisungen die Notwendigkeit von „mysql_real_escape_string()' in PHP überflüssig?

Linda Hamilton
Freigeben: 2024-11-04 11:34:01
Original
533 Leute haben es durchsucht

Do Prepared Statements Eliminate the Need for `mysql_real_escape_string()` in PHP?

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>
Nach dem Login kopieren

$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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!