SeanDowney
SeanDowney

Reputation: 17734

PDO valid characters for placeholders

In PHP with PDO, what characters are we limited to using. I've tried looking in the documentation and online but to no avail.

I did find a post where a user had used a hypen in the name which broke the query. I'm writing a function that dynamically generates these names and since hyphens are no nos, I was wondering if there was a list of alternatives.

<?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();
?>

So in this example what characters would be allowed in the string ':colour'?

Upvotes: 23

Views: 5658

Answers (2)

NikiC
NikiC

Reputation: 101926

The easiest way to find out, is to just check the source code:

BINDCHR     = [:][a-zA-Z0-9_]+;

You can use alphanumeric + underscore.

Upvotes: 38

Sander Marechal
Sander Marechal

Reputation: 23216

If I read the PDO SQL parser source code correctly, it's alphanumeric characters plus underscore.

Upvotes: 10

Related Questions