Reputation: 17734
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
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
Reputation: 23216
If I read the PDO SQL parser source code correctly, it's alphanumeric characters plus underscore.
Upvotes: 10