Hi folks. I am trying to figure out the best way to handle an interesting
issue in PDO prepared statements. Consider:
$search = 'mystring';
$stmt = $dbh->prepare("SELECT * FROM mytable WHERE myfield LIKE :myfield");
$stmt->execute(array(':myfield' => $search . '%'));
The above will search for any record whose myfield entry begins with the value
in $search. Great. And because it's a prepared statement, the database
handles SQL injection protection for us.
According to the manual, that is the correct way of handling LIKE statements:
http://us3.php.net/manual/en/pdo.prepared-statements.php
(See Example #6)
But! Now consider this:
$search = "100% pure PHP";
When that is run, the % in the literal string will get interpreted by the SQL
server as another wildcard character. That is not desired.
IIRC, the way in SQL to circumvent that is to convert "100%" into "100%%".
However, that does rather defeat the purpose of a prepared statement if I
have to do my own escaping anyway, does it not? We also cannot use
$dbh->quote(), as that is intended for cases where you're building a query
string directly rather than using a prepared statement.
How do other folks handle this issue?
--
Larry Garfield
[EMAIL PROTECTED]
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php