PHP连接mysql

PHP 5 及以上版本建议使用以下方式连接 MySQL :

  • MySQLi extension ("i" 意为 improved)
  • PDO (PHP Data Objects)

在 PHP 早起版本中我们使用 MySQL 扩展。但该扩展在 2012 年开始不建议使用。


我是该用 MySQLi ,还是 PDO?

如果你需要一个简短的回答,即 "你习惯哪个就用哪个"。

MySQLi 和 PDO 有它们自己的优势:

PDO 应用在 12 种不同数据库中, MySQLi 只针对 MySQL 数据库。

所以,如果你的项目需要在多种数据库中切换,建议使用 PDO ,这样你只需要修改连接字符串和部分查询语句即可。 使用 MySQLi, 如果不同数据库,你需要重新编写所有代码,包括查询。

两者都是面向对象, 但 MySQLi 还提供了 API 接口。

两者都支持预处理语句。 预处理语句可以防止 SQL 注入,对于 web 项目的安全性是非常重要的。


MySQLi 和 PDO 连接 MySQL 实例

在本章节及接下来的章节中,我们会使用以下三种方式来演示 PHP 操作 MySQL:

连接 MySQL

在我们访问 MySQL 数据库前,我们需要先连接到数据库服务器:

实例(mysqli - 面向过程)

 1 /*place host*/
 2 $db_host = ‘127.0.0.1‘;
 3 /*place username*/
 4 $db_username = ‘root‘;
 5 /*place password*/
 6 $db_passwd = ‘123123123‘;
 7 /*place dbname */
 8 $db_name = ‘db1‘;
 9 /*place port default 3306*/
10 //$db_port = ‘3306‘;
11 /*place socket or named pipe*/
12 //$db_socket = ‘‘;
13
14 /*面向过程连接mysql*/
15 $conn = mysqli_connect($db_host,$db_username,$db_passwd,$db_name) or die(‘Connect_Error(‘.mysqli_connect_errno().‘)‘.mysqli_connect_error());

实例(mysqli - 面向对象)

 1 *place host*/
 2 $db_host = ‘127.0.0.1‘;
 3 /*place username*/
 4 $db_username = ‘root‘;
 5 /*place password*/
 6 $db_passwd = ‘123123123‘;
 7 /*place dbname */
 8 $db_name = ‘db1‘;
 9 /*place port default 3306*/
10 //$db_port = ‘3306‘;
11 /*place socket or named pipe*/
12 //$db_socket = ‘‘;
13
14 /*面向对象连接mysql*/
15 $conn = new mysqli($db_host,$db_username,$db_passwd,$db_name) or die(‘Connect_Error(‘.mysqli_connect_errno().‘)‘.mysqli_connect_error());

实例(PDO)

1 *PDO*/
2 try{
3     $conn = new PDO("mysql:host=$db_host;dbname=mysql",$db_username,$db_passwd);
4     echo "连接成功";
5 }catch(PDOException $e){
6     echo $e->getMessage();
7 }

注意在以上 PDO 实例中我们已经指定了数据库 (myDB)。PDO 在连接过程需要设置数据库名。如果没有指定,则会抛出异常。

关闭连接

连接在脚本执行完后会自动关闭。你也可以使用以下代码来关闭连接:

实例(mysqli - 面向过程)
$conn->close();
实例(mysqli - 面向对象)
mysqli_close($conn);
实例(PDO)
$conn = null;
时间: 2024-10-13 05:56:43

PHP连接mysql的相关文章

搭建连接MySql的三层架构的ASP.NetCore2.0的WebApi

里我们用三层架构搭建一个连接MySql的ASP.netCore模板的WebApi项目 首先添加WebApi项目(ASP.NetCore版本) 右键解决方案>新建项目> 选择Web>ASP.NET Core Web应用程序(.NET Core) 选择Web API 此时的目录结构: 添加实体层Entity 右键添加>新建项目>.Net Core类库 添加后的目录结构 BaseEntity: using System; using System.Collections.Gener

Mac系统下虚拟机VMware Fusion下Win10如何通过Navcat连接Mysql 5.7

最近一直在折腾Mac系统,原先对Mac使用也不是很熟悉,所以安装过程中出现了很多问题.为了以后查阅方便,当然也为了使得和我一样的小白少踩一些坑, 所以就记录一下这些问题. 首先说一下VMware Fusion这个虚拟机软件吧.我下载的官方最新的版本8.5.7.然后开始安装,安装比较容易.最麻烦的就是如何安装WIn10系统呢?一开始我采取按部就班的方法,通过Mac自带的浏览器Safari去下载Win10 ISO的文件.结果速度太让人崩溃了,非常慢.后来我尝试把ISO通过百度网盘离线下载的方式先下载

mybatis连接mysql数据库插入中文乱码

对于mysql数据库的乱码问题,有两中情况: 1. mysql数据库编码问题(建库时设定). 2. 连接mysql数据库的url编码设置问题. 对于第一个问题,目前个人发现只能通过重新建库解决,建库的时候,选择UTF-8字符集.我试过修改现有数据库字符集为UFT -8,但是根本不起作用,插入的中文仍然乱码(中文显示成:???).重建库时选择字符集为UTF-8之后,中文正常显示了. 对于第二个问题,是这样 的情况:我建库时设置了数据库默认字符集为UTF-8,通过mysql workbench直接插

java连接mysql

1.下载jar包 网址:http://dev.mysql.com/downloads/ -->点击:"MySQL Connector/J 5.1 - Generally Available (GA) release (recommended)" -->点击:(mysql-connector-java-5.1.10.zip)后面的download按钮 -->点击:"? No thanks, just take me to the downloads!"

EF连接Mysql 表'TableDetails'中的列'IsPrimaryKey'的值为DBNull

无法生成模型,因为存在以下异常:'System.Data.StrongTypingException:表'TableDetails'中的列'IsPrimaryKey'的值为DBNull.---> System.InvalidCastException:指定的转换无效. 原文链接http://stackoverflow.com/questions/33575109/mysql-entity-the-value-for-column-isprimarykey-in-table-tabledetail

hibernate 连接 mysql 乱码的情况

在本地开发环境中,一切正常,部署到服务器后(windows 2003 + tomcat)含有中文的查询和表单提交都有乱码,从以下几个方面检查并解决了问题: 1.将所有jsp.js.css文件默认编码改为了utf-8,未解决问题. 2.struts2的配置文件中加入了节点:<constant name="struts.i18n.encoding" value="UTF-8" />  ,未解决问题. 3.web.xml中做如下确认和修改,未解决问题. <

mac 连接mysql提示 Warning: mysqli::real_connect(): (HY000/2002): No such file or directory

mac 连接mysql的时候提示 Warning: mysqli::real_connect(): (HY000/2002): No such file or directory [说明1]MAC下MYSQL的安装路径:/usr/local/mysql-5.5.28-osx10.6-x86 数据库的数据文件在该目录的data文件夹中: 命令文件在bin文件夹中. [说明2]通过终端打开MYSQL命令行的方法:/usr/local/mysql-5.5.28-osx10.6-x86/bin/mysq

java运行代码连接mysql时提示:找不到类错误

使用IntelliJ IDEA Community Edition进行代码编写.. 使用一下代码连接mysql时出现了:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver错误 然后就很好奇,import都能导入数据. 后来用idea工具打开以前的练习,发现架包也存在. 但是新建的练习就没有把架包弄进来.然后出现了这类错误.. 原因是:使用idea工具开发时,如果之前练习有添加相应的数据,那么在external libraries中是能显

远程桌面连接MySQL遇到的问题及解决方法总结

背景提要:想用Delphi做一个可以连接Mysql数据库的桌面应用程序.其中遇到了一些让自己很苦恼的问题.因为自己是新手,Delphi用的不熟,FireDAC这个连接数据库里控件更是没有接触过,对安装在CentOS上的MySQL更是一知半解.弄了半天,做出来的东西就是连接不上数据库.搞得一时间很头大.但最后还是找到了问题所在,都是处在了MySQL服务器设置上了. 问题一:MySQL服务器的端口没有打开.3306的端口不是默认打开的.需要在/etc/sysconfig/iptables配置文件中添

java连接mysql的过程

今天突然心血来潮,想要用java连接mysql,记得以前是在vs2010的环境下用C#连接sql sever,其实他们的方法都差不多. 现在就可以简单的介绍下java如何连接mysql 第一步,设计mysql的数据库,设计数据库的时候特别要注意,数据库名是xsxx,表名字是xs.注意在设置字符的时候一定要选用utf8,不然就会以你不懂的形式出现. 第二步:在esclip中新建项目,项目名称是TestJDBC,新建class名称为TestJDBC,添加引用项目文件 第三步:项目中的相关代码: --