我正在將我的應用程序從Mysql擴展移動到PHP PDO。 我正面臨一個奇怪的問題。 在我的開發環境中,我有db服務器[MySQL]和web服務器都在單個系統中,在測試環境中web和db服務器在不同的系統中。mysql_real_escape_string沒有顯示錯誤
以下測試代碼在開發環境中完美運行,並在測試環境中失敗。
require "class.DB.php" ;
class DbMaster extends DB
{
public function __construct()
{
$this->Host = "192.168.1.00";
$this->Database = 'test_database';
$this->User = "root";
$this->Password = "12345";
}
}
// Creates the instance
$db = new DbMaster();
$table = mysql_real_escape_string('persons');
$result_array = $db->query("SELECT Id, Age FROM $table WHERE Id >= :Id", array("Id" => 1));
foreach ($result_array as $rec)
{
echo '<br>'.$rec["Id"].' -> '.$rec['Age'];
}
在dev中,mysql_real_escape_string應該失敗,因爲沒有mysql_connect()。
但是,mysql_real_escape_string在有本地運行的mysql服務器時工作。爲了在開發環境中測試,我停止了本地mysql並連接到遠程數據庫。然後,我得到了以下錯誤:
Warning: mysql_real_escape_string(): A link to the server could not be established
與我現有的開發設置[Web和數據庫服務器一起]
所以,我無法看到的PDO相關的錯誤。
任何方式來解決這個問題。
看到[mysql_real_escape_string文檔](http://php.net/manual/en/function.mysql-real-escape-string.php)中的紅色矩形?請按照警告並使用[mysqli_real_escape_string()](http://php.net/manual/en/mysqli.real-escape-string.php)或[PDO escaping - quote()](http:// php .net/manual/en/pdo.quote.php): – Kleskowy 2014-10-01 10:47:54
爲什麼你需要轉義表名?它(或者它會)來自用戶輸入嗎? – HeatherEMSL 2014-10-01 10:56:27
不是一個直接的答案,但是當您使用準備好的語句時,您不需要手動清理這些數據 - 這是使用較新的數據庫功能的主要原因之一 – Steve 2014-10-01 11:05:54