PHP7连接mysql数据库方法

PHP7连接mysql数据库方法,第1张

1、用 mysql_connect 的方法,PHP7会报致命错误

$conn= mysql_connect('localhost','xueyanxiang','xueyanxiang')

Fatal error : Uncaught Error: Call to undefined function mysql_connect() in /Users/xueyanxiang/work/test/xue.php:31 Stack trace: #0 /Users/xueyanxiang/work/test/xue.php(119): xue->run() #1 {main} thrown in  /Users/xueyanxiang/work/test/xue.php  on line  31

原因是:

PHP5中使用mysql_connect()函数进行连接,但实际上,PHP5.5开始,MySQL就不推荐使用了,属于废弃函数

PHP7中貌似已经彻底不支持了,根据官网说明,取而代之的是如下两个:

本扩展自 PHP 5.5.0 起已废弃,并在将来会被移除。应使用 MySQLi 或 PDO_MySQL 扩展来替换之。参见 MySQL:选择

API 指南以及相关 FAQ 以获取更多信息。用以替代本函数的有:

mysqli_connect()

PDO::__construct()

使用时,不要在使用mysql_connect了,可以换用mysqli_connect(),用法基本类似吧,据说是面向对象的库。

php.ini中,也只有extension=php_mysqli.dll,而不再有extension=php_mysql.dll这个拓展了。

2、可以使用mysqli,对象化,方法名与被废弃的类似

$conn= mysqli_connect('localhost','xueyanxiang','xueyanxiang')

3、PDO工具,推荐使用

$dbh= "mysql:host=localhostdbname=test"

$db= new PDO($dbh,'xueyanxiang','xueyanxiang')

$objQuery= $db->query("select * from user")

$res= $objQuery->fetchAll(PDO::FETCH_ASSOC)

不填写参数的话,默认是关联和索引都有,如下图

一、常用普通方法

$mysql_server="localhost"

$mysql_username="数据库用户名"

$mysql_password="数据库密码"

$mysql_database="数据库名"

//建立数据库链接

$conn = mysql_connect($mysql_server,$mysql_username,$mysql_password) or die("数据库链接错误")

//选择某个数据库

mysql_select_db($mysql_database,$conn)

mysql_query("set names 'utf8'")

//执行MySQL语句

$result=mysql_query("SELECT id,name FROM 数据库表")

//提取数据

$row=mysql_fetch_row($result)

在提取数据的时候,我们使用mysql_fetch_row,还可以使用mysql_fetch_assoc和mysql_fetch_array,具体的我们参考手册。

第二、面向对象方法

$db=new mysqli($dbhost,$username,$userpass,$dbdatabase)

if(mysqli_connect_error()){

echo 'Could not connect to database.'

exit

}

$result=$db->query("SELECT id,name FROM user")

$row=$result->fetch_row()

第三、PDO方法

$dsn='mysql:host='.$dbhost.'dbname='.$dbdatabase.''

$dbh=new PDO($dsn,$username,$userpass)$stmt=$dbh->query('SELECT id,name FROM user')

$row=$stmt->fetch()

推荐第三种连接方式

问题一

今天给本本装上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 ")

//以下代码省略

?>

运行时出现如下提示:

fatal error: call to undefined function mysql_connect() in var/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”->“mysql5 server”->“MySQL Command Line Client”

//如此步成功则mysql安全成功,失效则mysql安装失败,请卸载后重装

B)输入密码

//此步正常则说明 root账户的密码正确。失败则账号密码有错

2> 新建文件至主目录,并保存为testmysql.php,接着在浏览器中输入http://localhost/testmysql.php (或者http://localhost:81/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服务器


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10040195.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存