【发布时间】:2012-12-08 21:27:53
【问题描述】:
我正在尝试从 PHP 函数中连接 mysql。凭据存储在一个单独的 PHP 文件中,我将其包含在函数中。但是当我运行脚本时,我收到以下错误:
Warning: mysql_query(): A link to the server could not be established in C:\xamp
p\htdocs\abc\test.php on line 12. Access denied for user 'ODBC'@'localhost' (using password: NO)
private function insertToMysql()
{
include_once('connect_db.php');
$connection = mysql_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD) or die('Oops connection error -> ' . mysql_error());
mysql_select_db(DB_DATABASE, $connection) or die('Database error -> ' . mysql_error());
//Queries
}
我尝试回显 include_once 并返回 1。这意味着,connect_db.php 已包含在内,但不知何故未加载常量。可能是什么问题???凭据是完美的,我验证了它们。我不是 PHP 新手。
connect_db.php 的内容:
<?php
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '<MyPassword>');
define('DB_DATABASE', 'testdb');
?>
【问题讨论】:
-
你能把带有敏感信息的connect_db.php的内容贴出来吗。
-
您是否尝试过 echo $connection 以查看是否正常? '//Queries' 之后的函数中是否所有 mysql_query() 命令?
-
mysql_query() 出现错误。您应该发布漏洞代码,因为发布的行似乎完全正确。此外,你不应该使用 mysql_,因为它已被弃用。
-
mysql_connect()和mysql_select_db()似乎都是正确的。否则,您应该会看到错误“糟糕...”或错误“数据库错误...”。 -
不要再使用不安全的 mysql_* API,它已被弃用!而是将 PDO 或 mysqli 与 preared 语句一起使用。在phptherightway.com 上阅读良好的 PHP 实践