我正在使用PDO扩展从PHP连接到MariaDB数据库。我想知道如何转义连接字符串中使用的特殊字符。如何转义PDO连接字符串中的特殊字符?
明显的尝试(URL编码,用单引号括起来)都失败了。
我目前不需要连接到例如一个奇怪的数据库,但我想知道如果我做的。
具体做法是:假设我有下面的PHP代码
<?php
$username = 'some user';
$password = 'some password';
$host = 'dummy.example.com';
$port = 1 << 16;
$dbname= 'alpha;a=b';
$PDO = new PDO("mysql:host=$host;port=$port;dbname=$dbname",
$username, $password, []);
因为$dbname
分号被解释为元字符这是行不通的。我想知道如何逃避这个角色。
你试过'$ dbname ='alpha \; a = b';'? –
我不认为任何人都会使用特殊字符作为数据库名称 - 如果它甚至被允许的话。至少 - 还有,UTF编码和定期转义应该照顾这个? –
btw,变量不会在单引号中被解析''mysql:host = $ host; port = $ port; dbname = $ dbname''。 SooOOoooo'“mysql:host = $ host; port = $ port; dbname = $ dbname”'。可能是这里的重头戏。 –