我将此代码用于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()可以告诉你有可用的函数。
所以,要做的事情:
- 修复上面列出的代码逻辑
- 启用错误打印或日志记录
- 检查您是否启用了mysql扩展
- 检查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');
?>