我在尝试连接到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或异常。这些是否会在某处记录到文件中?任何人都可以看到代码有问题吗?
用户名和密码正确无误。
非常感谢任何帮助,
马克
答案 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());