我正在使用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」'。可能是這裏的重頭戲。 –