mysql连接失败

时间:2012-08-21 09:29:35

标签: php sql linux

我正在使用此代码进行mysql连接

    $con = mysql_connect("localhost", "username" , "password");
    if (!$con)
    {
       die('Could not connect: ');
    }
    else 
     { echo "connection failed....";}
   mysql_select_db("ManagersDatabase", $con);
/var/lib/mysql/ManagersDatabase中可以找到

mysql数据库。 我的php页面可以在/var/www/html/中找到。 它什么都不打印。我的代码有什么问题?

4 个答案:

答案 0 :(得分:3)

这是您应该使用PDO进行连接的方式:and utilizing prepared query's when querying.

<?php 
try{
    $con = new PDO('mysql:host=127.0.0.1;dbname=your_database','root','password');
    $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $con->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    $con->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC);
}catch (Exception $e){
    die('Cannot connect to database. Details:'.$e->getMessage());
}
?>

或者mysqli and utilizing prepared query's when querying

<?php
$con = new mysqli("127.0.0.1", "user", "password", "your_database");
if ($con->connect_errno) {
    die("Failed to connect to MySQL: (".$con->connect_errno.") ".$con->connect_error);
}
print_r($con);
?>

编辑(回复评论): 如果添加print_r($con);,您应该看到mysqli连接对象,如:

/*
mysqli Object
(
    [affected_rows] => 0
    [client_info] => mysqlnd 5.0.10 - 20111026 - $Id: b0b3b15c693b7f6aeb3aa66b646fee339f175e39 $
    [client_version] => 50010
    [connect_errno] => 0
    [connect_error] => 
    [errno] => 0
    [error] => 
    [error_list] => Array
        (
        )

    [field_count] => 0
    [host_info] => 127.0.0.1 via TCP/IP
    [info] => 
    [insert_id] => 0
    [server_info] => 5.5.25a
    [server_version] => 50525
    [stat] => Uptime: 10  Threads: 1  Questions: 1  Slow queries: 0  Opens: 33  Flush tables: 1  Open tables: 26  Queries per second avg: 0.100
    [sqlstate] => 00000
    [protocol_version] => 10
    [thread_id] => 1
    [warning_count] => 0
)
*/

其他方法已过时,很快就会(谢天谢地)弃用。

答案 1 :(得分:0)

你应该在else块中连接你的数据库;

   $con = mysql_connect("localhost", "username" , "password");
    if (!$con)
    {
       die('Could not connect: ');
    }
    else    // if connection is made, then select the DB
     { 
       mysql_select_db("ManagersDatabase", $con);
     }

答案 2 :(得分:0)

引用你的问题:

if (!$con)
{
   die('Could not connect: ');
}
else 
 { echo "connection failed....";}

...你注意到它没有多大意义吗?它是说(某事){//无法连接}否则{//连接失败}所以你的代码认为它总是失败。

你应该拥有的东西就像是

$con = mysql_connect("localhost", "username" , "password");
if ($con === false)
{
   die('Could not connect: ' . mysql_error());
}
mysql_select_db("ManagersDatabase", $con);

所以它实际上会打印出来。

此外,您应该启用display_errors以获取屏幕上的错误或使用error_log,这样您就可以将错误记录到某处。

另外,请检查您是否已启用并正在使用mysql扩展,并且mysql_connect()函数可用。的phpinfo();将告诉你有哪些扩展,function_exists()可以告诉你有可用的功能。

所以,要做的事情:

  1. 修复上面列出的代码逻辑
  2. 启用错误打印或记录
  3. 检查您是否启用了mysql扩展
  4. 检查mysql_connect()函数是否实际可调用

  5. 修改即可。因为缺少的mysql扩展似乎是问题('调用未定义的函数mysql_connect'):

    首先,您需要访问PHP配置。如果这是您的本地安装或服务器,那么您应该这样做 - 如果您使用其他人托管,那么他们应该更改这些内容。

    给出一些假设,例如

    • 您正在使用本地Apache服务器
    • 您没有使用XAMPP或任何其他* AMP产品,而是使用香草装置

    这是你应该做的:

    • 找到你的php.ini配置文件或根据PHP文件夹中的示例文件创建一个文件(如果你没有)
    • 找到下面的行(.dll用于windows,.so用于linux,不知道其他人)

    ;extension=php_mysql.dll
    ;extension=php_mysqli.dll
    ;extension=php_pdo_mysql.dll
    

    • 从您要使用的评论中删除评论(第一个';')。你正在使用你的例子中的第一个,其他的是使用其他一些帖子中描述的其他抽象,所以如果你想要使用你拥有的代码,你将取消注释第一个。
    • 如果您想立即查看任何配置问题,也请启用“display_startup_errors”
    • 检查“extension_dir”设置是否正确,并指向您具有上述.dll扩展名的文件夹
    • 重新启动Apache服务器

答案 3 :(得分:-1)

这是项目 connect.php 的模板文件。你可以使用它。

<?php
// Connecting, selecting database
  $link = mysql_connect('localhost', 'root', '') or die('Could not connect: ' . mysql_error());
//echo 'Connected successfully';
  mysql_select_db('procost') or die('Could not select database');
?>
相关问题