php mysql连接问题

时间:2011-01-10 12:26:41

标签: php mysql

我在尝试连接到my_sql数据库时遇到问题。我是PHP的新手,所以这可能是一个非常简单的问题。在我的index.php的顶部,我有以下代码:

try
   {
      echo 'here 1';
      $db=mysql_connect('localhost', 'root', 'password') or die(mysql_error());
      echo 'here 2';
      if(!$db)
      {
         echo 'here 3';
      }
         $db_selected=mysql_select_db("alphaes", $db);
      echo 'here 4';

      if (!$db_selected) {
         die ('Can\'t use foo : ' . mysql_error());
      }
      echo 'here 5';
   }
   catch (Exception $e)
   {
      echo 'Caught exception: ',  $e->getMessage(), "\n";
   }

问题是该页面的唯一输出是“此处为1”。如果我注释掉所有数据库代码,页面加载就可以了。连接代码有问题,但我没有看到写入浏览器的mysql_error或异常。这些是否会在某处记录到文件中?任何人都可以看到代码有问题吗?

用户名和密码正确无误。

非常感谢任何帮助,

马克

4 个答案:

答案 0 :(得分:2)

这是一个非常简单的示例,它将较新的mysqli扩展与异常处理结合使用:

<?php

ob_start(); 

try
{
    $db = new mysqli("localhost", "foo_dbo", "pass", "foo_db", 3306);

    if ($db->connect_errno) 
        throw new exception(sprintf("Could not connect: %s", $db->connect_error));

    $sqlCmd = "select * from users order by username";
    $result = $db->query($sqlCmd);

    if(!$result) throw new exception(sprintf("Invalid query : %s", $sqlCmd));

    if($db->affected_rows <= 0){
        echo "no users found !";
    }
    else{
        $users = $result->fetch_all(MYSQLI_ASSOC);
        foreach($users as $u) echo $u["username"], "<br/>";
    }
    $result->close();
}
catch(exception $ex)
{
    ob_clean(); 
    echo sprintf("zomg borked - %s", $ex->getMessage());
}

if(!$db->connect_errno) $db->close();
ob_end_flush();
?>

答案 1 :(得分:0)

感谢所有回复的人 - 原来这是'初学者'的错误 - 在php配置文件中没有启用mysql。

答案 2 :(得分:-1)

如果它只输出“here 1”,则意味着代码停在:

$db=mysql_connect('localhost', 'root', 'password') or die(mysql_error());

我认为这是因为mysql_error需要从mysql_connect获取最后一个连接,并且连接失败。

来自文档:

MySQL连接。如果未指定链接标识符,则假定mysql_connect()打开的最后一个链接。 如果没有找到这样的链接,它将尝试创建一个,就好像没有参数调用mysql_connect()。如果未找到或建立连接,则会生成E_WARNING级别错误。

(强调我的)

http://php.net/manual/en/function.mysql-error.php

尝试使用一些字符串输出更改mysql_error,看看它是否有效。如果它工作,则错误在数据库连接中。

答案 3 :(得分:-1)

尝试没有密码:$db=mysql_connect('localhost', 'root', '') or die(mysql_error());