MySQL数据库连接问题

时间:2011-02-15 12:51:09

标签: php mysql

我正在尝试从我的脚本连接到数据库,但不断收到错误:“无法选择数据库”

这是config.php文件

<?php
$hostname = 'localhost'; //it's localhost in all all cases
$db_username = 'root@localhost';
$db_password = '';
$dbname = 'function';
$link = mysql_connect($hostname, $db_username, $db_password) or die("Cannot connect to the database");
mysql_select_db($dbname) or die("Cannot select the database");
?>

我在Windows上使用XAMPP,创建了一个名为function的数据库,没有密码,在本地运行。我仍然无法弄清楚为什么它没有选择数据库。

3 个答案:

答案 0 :(得分:3)

用户名应该只是“root”,因为它应该具有所有数据库的权限:)

答案 1 :(得分:0)

这应该可以解决问题,但请大家帮个忙,并研究PDO

<?php
$hostname = 'localhost'; //it's localhost in all all cases
$db_username = 'root'; // NOT @localhost
$db_password = null; // NOT '';
$dbname = 'function';
$link = mysql_connect($hostname, $db_username, $db_password) or die("Cannot connect to the database");
mysql_select_db($dbname) or die("Cannot select the database");
?>

另外:如果不能解决问题,可以尝试“127.0.0.1”而不是“localhost”。还检查mysql_error($ link)以获得实际有用的消息

第二个补充:根据Jesper Rasmussen的回答删除了@localhost(不能相信我错过了。)

答案 2 :(得分:0)

请使用以下代码。它将创建一个pdo,mysqli obj或一个mysqli pro。取决于变量设置的内容。 EX:$ type = 1 //创建一个mysqli obj ... $ type = 2 //创建一个mysqli pro ... $ type = 3 //创建一个pdo连接。然后在第8,9,10和11行更改4个变量。

link.php

<?php
/*
link.php
Created By Nicholas English
*/
$link = null;
$connection = null;
$servername = "";
$username = "";
$dbname = "";
$pass = "";
$mysqli = null;
$pdo = null;
$obj = null;
$pr = null;
$type = 3;
if ($type === 1) {
$mysqli = true;
$pdo = false;
$obj = true;
$pr = false;
} else {
if ($type === 2) {
$mysqli = true;
$pdo = false;
$obj = false;
$pr = true;
} else {
if ($type === 3) {
$mysqli = false;
$pdo = true;
$obj = false;
$pr = false;
} else {
$mysqli = null;
$pdo = null;
$obj = null;
$pr = null;
}
}
}
if ($mysqli === true && $obj === true) {
$link = new mysqli($servername, $username, $pass, $dbname);
if ($link->connect_error) {
die("Connection failed: " . $link->connect_error);
}
$connection = true;
} else {
if ($mysqli === true && $pr === true) {
$link = mysqli_connect($servername, $username, $pass, $dbname);
if (!$link) {
die("Connection failed: " . mysqli_connect_error());
}
$connection = true;
} else {
if ($pdo === true && $mysqli === false) {
try {
$link = new PDO("mysql:host=$servername;dbname=$dbname", $username, $pass);
$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$connection = true;
}
catch(PDOException $e)
{
$connection = null;
echo "Connection failed: " . $e->getMessage();
}
} else {
$link = null;
$connection = null;
}
}
}
if ($connection == null && $link == null) {
$error = 1;
}
?>

然后,下面的代码会显示在您的页面顶部。

的index.php

<?php
include "link.php";
if ($error === 1) {
$error = ""; // tell user that there is a configuration error
}
?>

因此,您网页上的某些位置可以使用此代码显示错误

<h1><?php echo "".$error.""; ?></h1>

你应该切换到mysqli或pdo,以获得更安全的连接。