0
我想打印我的SQL語句,到調試文件:如何防止通配符在exec()中被解釋?
$dbh = new PDO("mysql:host=$db_host;dbname=$db_name" , $db_user, $db_password);
$sql = "SELECT * from $db_table";
// do somethings ...
// Print SQL statement to file for debugging
exec(" echo DEBUG: $sql > /tmp/sql.debug ");
$statement = $dbh->prepare($sql);
$statement->execute();
$result = $statement->fetchAll();
但通配符將在工作目錄被解釋爲文件列表,所以我得到的結果鏈接纔可這個
$ cat /tmp/sql.debug
SELECT **1.php 2.php 3.php** from syslog WHERE program = xxx AND ip = 192.168.1.1
如何我可以防止通配符在exec()中被解釋,以獲得正確的調試消息嗎?
shell接受反斜槓作爲轉義字符。您必須在PHP中再次使用反斜槓,所以請嘗試:'select $ * db_table'# – Andomar
再次轉義反斜槓將獲得正確的調試消息,但是PDO查詢將失敗。 – Brightshine