mysql连接失败


mysql connection fails

我将此代码用于mysql连接

    $con = mysql_connect("localhost", "username" , "password");
    if (!$con)
    {
       die('Could not connect: ');
    }
    else 
     { echo "connection failed....";}
   mysql_select_db("ManagersDatabase", $con);

mysql数据库将在CCD_ 1中找到。我的php页面将在CCD_ 2中找到。它什么也没印。我的代码出了什么问题?

这就是您应该如何连接,通过使用PDO:并在查询时使用准备好的查询。

<?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,并在查询时使用准备好的查询。

<?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
)
*/

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

您应该连接到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);
     }

引用您的问题:

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()函数是否真的可以调用

编辑。由于缺少mysql扩展似乎是问题所在("调用未定义的函数mysql_connect"):

首先,您需要访问您的PHP配置。如果这是你的本地安装或服务器,你应该拥有它——如果你使用的是其他人的主机,他们应该改变这些东西。

给定一些假设,例如

  • 您正在使用本地apache服务器
  • 您使用的不是XAMPP或任何其他*AMP产品,而是普通安装

这就是你应该做的:

  • 找到你的php.ini配置文件,或者如果你没有,根据php文件夹中的示例文件创建一个
  • 查找下面的行(对于windows为.dll,对于linux为.so,不了解其他行)

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

  • 从要使用的注释中去掉注释(第一个";")。您在示例中使用了第一个,其他的用于使用其他帖子中描述的其他抽象,所以如果您想使用现有代码,您应该取消对第一个的注释
  • 如果您想立即看到任何配置问题,也可以启用"display_startup_errors"
  • 检查"extension_dir"设置是否正确,并且是否指向具有上述.dll扩展名的文件夹
  • 重新启动您的apache服务器

这是您项目的模板文件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');
?>