gpt4 book ai didi

php - mysql_real_escape_string 未显示错误

转载 作者:行者123 更新时间:2023-11-29 07:52:09 25 4
gpt4 key购买 nike

我正在将我的应用程序从 Mysql 扩展移至 PHP PDO。我面临一个奇怪的问题。在我的开发环境中,我的数据库服务器 [MySQL] 和 Web 服务器都位于单个系统中,而在测试环境中,Web 和数据库服务器位于不同的系统中。

以下测试代码在开发环境中运行完美,在测试环境中失败。

    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 服务器时,mysql_real_escape_string 才有效。为了在开发环境中测试这一点,我停止了本地 mysql 并连接到远程数据库。然后我收到以下错误:

Warning: mysql_real_escape_string(): A link to the server could not be established 

因此,使用我现有的开发设置 [Web 和数据库服务器一起],我无法看到与 PDO 相关的错误。

有什么办法可以解决这个问题。

最佳答案

如果不存在连接,

mysql_real_escape_string() 尝试使用 mysql_connect() 打开与服务器的连接。 mysql_connect() 的默认值为“localhost”和“root”,没有密码。

如果您的开发环境中的 root 帐户没有密码(这是一种非常常见的设置),那么这将毫无问题,因为可以建立连接。

另一方面,在实际环境中,root 用户希望设置密码,因此此调用将会失败。

在这种情况下,mysql_real_escape_string() 将返回 false 而不是您的转义值。

解决方案:使用该函数的 mysqli 或 PDO 等效项。或者使用 mysql_connect() 使用有效凭据暂时打开一个附加连接,以便 mysql_real_escape_string() 可以使用它。

关于php - mysql_real_escape_string 未显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26139514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com