php mysql数据库 不能连接问题一
今天给本本装上mysql和php,一切安装都很正常(php@IIS7.5-fastCGI) 。但用phpmyadmin连接测试时却出现“#2002无法连接”的错误,用其它程序也是同样问题 。
检查了下,php的mysql扩展正确安装,mysql服务正常启动--那就奇了怪了 。又用navicat连接,居然连上了 。。看来是php和mysql间的通讯出了问题 。
百度了一下,问题被揪出来了:
mysql_connect()函数数据库服务器(server)参数当前设置为localhost,但当其更改为127.0.0.1后又可以正常访问 。
系统hosts文件未提供127.0.0.1到localhost的解析 。
解决方法(以win7系统为例):找到C:\Windows\System32\drivers\etc\hosts文件 , 默认为只读,你需要复制一份到其他路径如桌面,打开文件(打开方式:记事本),在文件末尾添加:
127.0.0.1 localhost
如果已存在去掉其前面的“#” 。
问题二
php脚本可以正常运行 , 如phpinfo() 。
只要一出现“mysql_connect”函数 , 就没反应,也不报错 。
如 $conn = mysql_connect("127.0.0.1","root","xxxx") or die("MYSQL数据库连接失败:".mysql_error());
apache日志目录error.log中出现
PHP Warning:PHP Startup: Unable to load dynamic library 'c:\\php\\ext\\php_mysql.dll'
解决办法
将“libmysql.dll”复制到apache的bin目录下 。然后重启,观察error.log,如果错误消失,那恭喜了 。
另:网上资料也有说将““libmysql.dll””“php_mysql.dll”复制到windows/system32的 。
问题三
代码如下 复制代码
?//以上代码省略
$link_id=@mysql_connect( "localhost ", "sampadm ", "secret ");
//以下代码省略
?
运行时出现如下提示:
fatalerror:calltoundefinedfunctionmysql_connect()invar/www/html/mytest.php
解决方法
1.php.ini中
extension_dir设置为"d:\apache2\php\ext "绝对路径,否则有些环境中会出错 。
打开下面两行功能扩展
extension=php_mysql.dll
extension=php_mysqli.dll
2.拷贝libmysql.dll(php目录下)和php_mysql.dll(php/ext目录下)至c:\windows\system32目录下(libmysql.dll必须为php目录下 , 比如我的为D:\apache2\php目录下的libmysql.dll,php_mysql.dll则在D:\apache2\php\ext)
3.测试,
1先打开命令行
A)依次点击“开始”菜单- “mysql”- “mysql5server”- “MySQLCommandLineClient”
//如此步成功则mysql安全成功,失效则mysql安装失败 , 请卸载后重装
B)输入密码
//此步正常则说明root账户的密码正确 。失败则账号密码有错
2新建文件至主目录 , 并保存为testmysql.php,接着在浏览器中输入(或者)
如果不行查看一下apache是否加载了php与 mysql方法
apache中支置对php5的支持httpd.conf文件中加入下面三行
PHPIniDir "D:/ccopen/php5/"
LoadModule php5_module "D:/ccopen/php5/php5apache2_2.dll"
AddType application/x-httpd-php .php
php.ini中去掉下面两行分号
extension=php_mysql.dll
extension=php_mysqli.dll
将php_mysql.dll和libmysql.dll拷到system32
重起apache服务器
PHP无法连接MySQL:die('Could not connect: ' . mysql_error());【php数据库连接die php数据库连接成功】这个主要就是显示 出错信息,方便查错和调试,如果你知道 这里会出现什么问题的话 一般if(!$q){
exit('数据库连接失败?。?);
}这样写就理友好一些了 。
无法连接数据库
如果用户名密码没错的话
可能你的mysql并没有安装成window 服务
手动去mysql安装目录下 启动bin目录下的mysqld.exe
打开PHP网站时显示“不能连接服务器!”首先检查
apache的日志文件php数据库连接die , 看里面说什么php数据库连接die,日志通常在/var/log/apache2
或者
/var/log/httpd下面
其次在index.php打开调试开关php数据库连接die,获得更多调试信息,在php开始位置加入
error_reporting(e_all);
ini_set("display_errors",
1);
再其次检查index.php的目录下有没有.htaccess文件,改名以后看看
如果还是不知道原因 , 追问我 。
php调试出错,显示die(' Could not connect: ' . mysql_error());出错无法连接数据库
如果用户名密码没错php数据库连接die的话
可能php数据库连接die你php数据库连接die的mysql并没有安装成window 服务
手动去mysql安装目录下 启动bin目录下php数据库连接die的mysqld.exe
PHP网站怎么连接到数据库?常规方式
常规方式就是按部就班的读取文件了 。其余的话和上述方案一致 。
// 读取配置文件内容
$handle = fopen("filepath", "r");$content = fread($handle, filesize("filepath"));123
PHP解析XML
上述两种读取文件,其实都是为了PHP解析XML来做准备的 。关于PHP解析XML的方式的博客有很多 。方式也有很多,像simplexml,XMLReader,DOM啦等等 。但是对于比较小型的xml配置文件,simplexml就足够了 。
配置文件
?xml version="1.0" encoding="UTF-8" ?mysql
!-- 为防止出现意外,请按照此标准顺序书写.其实也无所谓了 --
hostlocalhost/host
userroot/user
password123456/password
dbtest/db
port3306/port/mysql12345678910
解析
?php/**
* 作为解析XML配置文件必备工具
*/class XMLUtil {
public static $dbconfigpath = "./db.config.xml";public static function getDBConfiguration() {
$dbconfig = array ();try {// 读取配置文件内容
$handle = fopen(self::$dbconfigpath, "r");$content = fread($handle, filesize(self::$dbconfigpath));// 获取xml文档根节点,进而获取相关的数据库信息
$mysql = simplexml_load_string($content);// 将获取到的xml节点信息赋值给关联数组,方便接下来的方法调用
$dbconfig['host'] = $mysql-host;$dbconfig['user'] = $mysql-user;$dbconfig['password'] = $mysql-password;$dbconfig['db'] = $mysql-db;$dbconfig['port'] = $mysql-port;// 将配置信息以关联数组的形式返回
return $dbconfig;
} catch ( Exception $e ) {throw new RuntimeException ( "mark读取数据库配置文件信息出错!/markbr /" );
}return $dbconfig;
}
}1234567891011121314151617181920212223242526272829
数据库连接池
对于PHP程序而言,优化永无止境 。而数据库连接池就在一定程度上起到了优化的作用 。其使得对用户的每一个请求而言,无需每次都像数据库申请链接资源 。而是通过已存在的数据库连接池中的链接来返回 , 从时间上,效率上,都是一个大大的提升 。
于是,这里简单的模拟了一下数据库连接池的实现 。核心在于维护一个“池” 。
从池子中?。?用毕,归还给池子 。
?php/**x
*PHP中的数据库 工具类设计
*郭璞
*2016年12月23日
*
**/class DbHelper {private $dbconfig;private $dbpool;public $poolsize;public function __construct($poolsize = 20) {if (! file_exists ( "./utils.php" )) {throw new RuntimeException ( "markutils.php文件丢失,无法进行配置文件的初始化操作!/markbr /" );
}else {
require './utils.php';
}// 初始化 配置文件信息
$this-dbconfig = XMLUtil::getDBConfiguration ();// 准备好数据库连接池“伪队列”
$this-poolsize = $poolsize;
$this-dbpool = array ();for($index = 1; $index = $this-poolsize; $index) {
$conn = mysqli_connect ( $this-dbconfig ['host'], $this-dbconfig ['user'], $this-dbconfig ['password'], $this-dbconfig ['db'] ) or die ( "mark连接数据库失败!/markbr /" );
array_push ( $this-dbpool, $conn );
}
}/**
* 从数据库连接池中获取一个数据库链接资源
*
* @throws ErrorException
* @return mixed
*/
public function getConn() {if (count ( $this-dbpool ) = 0) {throw new ErrorException ( "mark数据库连接池中已无链接资源 , 请稍后重试!/mark" );
} else {return array_pop ( $this-dbpool );
}
}/**
* 将用完的数据库链接资源放回到数据库连接池
*
* @param unknown $conn
* @throws ErrorException
*/
public function release($conn) {if (count ( $this-dbpool ) = $this-poolsize) {throw new ErrorException ( "mark数据库连接池已满/markbr /" );
} else {
array_push ( $this-dbpool, $conn );
}
}
}
connect_error) 不返回错误信息?'>php连接MySQL时 , 为什么die("错误信息:" . $conn->connect_error) 不返回错误信息?亲 , 你好!
die("错误信息..."); 这种方式停止脚本,只有在用php 命令在命令行运行脚本时,信息才会被输出出来 。
如果你是website的话,die()这个方法会导致一个错误页面的 , 就像你看到的一样,返回了一个500的页面 。所以在进行网站开发时,最好不要用die();这个方法来进行异常情况的处理 。
如果你想在页面中输出错误信息,建议直接用echo 把错误给输出到页面中 。但是为了安全,最好不要直接将你的错误信息给输出到页面中 。你可以把错误信息以日志的形式记录到文件中 。
希望可以帮到你哦!~~
关于php数据库连接die和php数据库连接成功的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。
推荐阅读
- 鸿蒙对手机的要求,鸿蒙适用哪些机型
- 发布视频用什么电脑,做视频一般用什么电脑
- 虚拟机装内存,虚拟机用虚拟内存
- linuxtop命令k的简单介绍
- 电商erp如何招商,电商erp怎么操作
- 如何制作一份鞋子推广文案,鞋子推广文案大全
- gis用地类型分类教程,gis在土地利用中的应用
- c语言用函数数据交换 c语言用函数交换两个数
- 如何写营销推广策略,营销的推广方案