Jump to content

switching to mysqli_prepared statements


eMonk

Recommended Posts

I want to switch to mysqli_prepared statements but have a question before I start.

 

example 1

$query = $mysqli->prepare('SELECT * FROM users WHERE username = ?');
$query->bind_param('s', $_GET['username']);
$query->execute();

example 2

$query = $mysqli->prepare("SELECT * FROM users WHERE username = 'Rick' ");
$query->execute();

Is bind_param always necessary and why, for security reasons? 

Link to comment
https://forums.phpfreaks.com/topic/280872-switching-to-mysqli_prepared-statements/
Share on other sites

Compare them fairly:

$query = $mysqli->prepare('SELECT * FROM users WHERE username = ?');
$query->bind_param('s', $_GET['username']);
$query->execute();
$query = $mysqli->prepare("SELECT * FROM users WHERE username = '" . $_GET['username'] . "' ");
$query->execute();
See the problem with #2? The username isn't escaped. Without prepared statements you'd have to escape it yourself, which requires knowing how to do that properly (which isn't complicated or anything). With prepared statements you don't have to, and in fact should not, escape anything. No hidden gotchas.

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.