MySQLI 的sata2和sata3接口区别有哪些,和MySQL的sata2和sata3接口区别有哪些区别

PHP连接数据库(mysqli)
时间: 12:28:36
&&&& 阅读:99
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&
& &我们在PHP中可以使用mysqli扩展与MySQL数据库信息交流,i表示改进,增强,它
& &执行速度更快。mysqli扩展被封装到一个类中,它是一种面向对象的技术,不过
& &喜欢过程化编程的用户也不用担心,mysqli也提供了一个面向过程的接口,我们
& &可以像调用函数那样去使用mysqli扩展,所以我们现在学习mysqli扩展相当于就
& &是学习它提供给我们的一些函数!
& &1.建立、关闭与MySQL服务器的连接
& &2.执行SQL语句
& &3.预处理语句机制
& & & 1)连接指定的mysql服务器
& & & &_connect($host, $user, $password,$database,$port);
& &2)连接错误时的提示
& & & &int mysqli_connect_errno ();//返回最后一次连接调用的错误代码
& & & &string mysqli_connect_error ();//返回一个字符串描述的最后一次连接调用的错误代码
& &3)设置默认字符编码
& & & &bool mysqli_set_charset ( mysqli $link , string $charset )
& &4)选择特定的数据库
& & & &bool mysqli_select_db ( mysqli $link , string $dbname);
& &5)关闭与mysql服务器的连接
& & & &bool mysqli_close ( mysqli $link );
代码如下:
header('Content-type:text/charset=utf-8');//header确定编码类型,防止中文输出乱码
_connect('localhost','root',';,'',3306);//连接函数,@符号屏蔽输出错误
if(mysqli_connect_errno()){//假如错误则函数值不为零
exit(mysqli_connect_error());//假如错误输出错误提示
mysqli_set_charset($link, 'utf8');//设置默认字符编码
mysqli_select_db($link,'test');//选择数据库,test为数据库名称
mysqli_close($link);//关闭数据库连接
标签:&&&&&&&&&原文地址:http://blog.csdn.net/yayun0516/article/details/
&&国之画&&&& &&&&chrome插件
版权所有 京ICP备号-2
迷上了代码!1)安全性、稳定性更高;2)提供了面向对象和面向过程两种风格
&php.ini &中的 &extension=php_mysqli.dll 解除封印
1.什么是mysqli
PHP-MySQL 函数库是 PHP 操作 MySQL 资料库最原始的扩展库,PHP-MySQLi 的 i 代表 Improvement ,相当于前者的增强版,也包含了相对进阶的功能,另外本身也增加了安全性,比如可以大幅度减少 SQL 注入等问题的发生。
2. mysql与mysqli的概念相关
(1)mysql与mysqli都是php方面的函数集,与mysql数据库关联不大。
(2)在php5版本之前,一般是用php的mysql函数去驱动mysql数据库的,比如mysql_query()的函数,属于面向过程
(3)在php5版本以后,增加了mysqli的函数功能,某种意义上讲,它是mysql系统函数的增强版,更稳定更高效更安全,与mysql_query()对应的有mysqli_query(),属于面向对象,用对象的方式操作驱动mysql数据库。
3.&mysql与mysqli的主要区别
(1)首先两个函数都是用来处理DB 的。
(2)mysqli 连接是永久连接,而mysql是非永久连接。什么意思呢? mysql连接每当第二次使用的时候,都会重新打开一个新的进程,而mysqli则只使用同一个进程,这样可以很大程度的减轻服务器端压力。
(3)mysqli封装了诸如事务等一些高级操作,同时封装了DB操作过程中的很多可用的方法。应用比较多的地方是 mysqli的事务。具体查看&&
例如如下代码分别是mysqli的面向对象编程方式和面向过程方式:
面向对象方式:
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
printf("Host information: %s\n", $mysqli-&host_info);
/* close connection */
$mysqli-&close();
面向过程方式:
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* check connection */
if (!$link) {
printf("Connect failed: %s\n", mysqli_connect_error());
printf("Host information: %s\n", mysqli_get_host_info($link));
/* close connection */
mysqli_close($link);
(4)mysqli 可以通过预处理语句来减少开销和SQL注入的风险,而mysql则做不到。
综上所述,如果大家用的是PHP5,而且mysql版本在5.0以上,希望大家以后能用mysqli的就尽量使用mqsqli,不仅高效,而且更安全,而且推荐大家使用面向对象编程方式。
在这里,我们也只介绍面向对象编程方式。
&1. 连接数据库并获取相关信息
$mysqli=@new mysqli("localhost", "root", "", "mysql");
//如果连接错误
if(mysqli_connect_errno()){
echo "连接数据库失败:".mysqli_connect_error();
$mysqli=null;
//获取当前字符集
echo $mysqli-&character_set_name()."&br&";
//获取客户端信息
echo $mysqli-&get_client_info()."&br&";
//获取mysql主机信息
echo $mysqli-&host_info."&br&";
//获取服务器信息
echo $mysqli-&server_info."&br&";
//获取服务器版本
echo $mysqli-&server_version."&br&";
//关闭数据库连接
$mysqli-&close();
如果连接成功则运行结果:
mysqlnd 5.0.10 –
– $Id: e707c415dbbee0372157 $
localhost via TCP/IP
5.6.12-log
如果连接失败则可能结果为:
连接数据库失败:Access denied for user ‘root’@’localhost’ (using password: YES)
连接数据库失败:Unknown database ‘hello’
2.查询数据
$mysqli=@new mysqli("localhost", "root", "", "design");
//如果连接错误
if(mysqli_connect_errno()){
echo "连接数据库失败:".mysqli_connect_error();
$mysqli=null;
//构造SQL语句
$query = "SELECT * FROM
designer order by ID LIMIT 3";
//执行SQL语句
$result = $mysqli-&query($query);
//遍历结果
while($row = $result-&fetch_array(MYSQLI_BOTH)){
echo "id".$row['id']."&br&";
//释放结果集
$result-&free();
//关闭数据库连接
$mysqli-&close();
运行结果:
在这里需要注意的是:
fetch_array(MYSQLI_BOTH)
这个方法,参数有三个,分别是 MYSQLI_BOTH,MYSQLI_NUM,MYSQLI_ASSOC。
如果参数传入了&MYSQLI_BOTH,返回数组的索引既包括数字和名称。
array (size=26)
0 =& string '10062' (length=5)
'id' =& string '10062' (length=5)
1 =& string '??' (length=2)
'name' =& string '??' (length=2)
2 =& string '' (length=17)
'email' =& string '' (length=17)
3 =& string '' (length=11)
'phone' =& string '' (length=11)
如果参数传入了&MYSQLI_NUM,返回数组的索引只包含数字。
array (size=13)
0 =& string '10062' (length=5)
1 =& string '??' (length=2)
2 =& string '' (length=17)
3 =& string '' (length=11)
如果参数传入了&MYSQLI_BOTH,返回数组的索引只包含名称。
array (size=13)
'id' =& string '10062' (length=5)
'name' =& string '??' (length=2)
'email' =& string '' (length=17)
'phone' =& string '' (length=11)
其实还有等价的方法&fetch_row(),fetch_assoc()
他们之间的关系如下:
$result-&fetch_row() =
mysql_fetch_row() = $result-&fetch_array(MYSQLI_NUM) = mysql_fetch_array(MYSQLI_NUM)
返回索引数组
$result-&fetch_assoc() =
mysql_fetch_assoc() = $result-&fetch_array(MYSQLI_ASSOC) = mysql_fetch_array(MYSQLI_ASSOC)
返回索引列名
如果&fetch_array()方法什么也不传,则默认传入了&MYSQLI_BOTH
3.插入数据
$mysqli=@new mysqli("localhost", "root", "", "design");
//如果连接错误
if(mysqli_connect_errno()){
echo "连接数据库失败:".mysqli_connect_error();
$mysqli=null;
//插入数据
$sql="insert into designer(name,phone) values('hello','')";
//执行插入语句
$result=$mysqli-&query($sql);
//如果执行错误
if(!$result){
echo "SQL语句有误&br&";
echo "ERROR:".$mysqli-&errno."|".$mysqli-&
//如果插入成功,则返回影响的行数
echo $mysqli-&affected_
//关闭数据库连接
$mysqli-&close();
如果插入成功,那么结果则会是1,如果失败,则会报出错误。
4.修改内容
$mysqli=@new mysqli("localhost", "root", "", "design");
//如果连接错误
if(mysqli_connect_errno()){
echo "连接数据库失败:".mysqli_connect_error();
$mysqli=null;
//插入数据
$sql="update designer set name = 'hello' where id = 10062";
//执行插入语句
$result=$mysqli-&query($sql);
//如果执行错误
if(!$result){
echo "SQL语句有误&br&";
echo "ERROR:".$mysqli-&errno."|".$mysqli-&
//如果插入成功,则返回影响的行数
echo $mysqli-&affected_
//关闭数据库连接
$mysqli-&close();
如果修改成功,同样返回被修改的行数。
5.预处理语句
$mysqli = @new mysqli("localhost", "root", "", "design");
//如果连接错误
if(mysqli_connect_errno()){
echo "连接数据库失败:".mysqli_connect_error();
$mysqli=null;
//准备好一条语句放到服务器中,插入语句
$sql = "insert into designer(name, email) values(?, ?)";
//生成预处理语句
$stmt = $mysqli-&prepare($sql);
//给占位符号每个?号传值(绑定参数) i
b,第一个参数为格式化字符,ss代表两个字符串,d代表数字
$stmt-&bind_param("ss", $name, $email);
//为变量赋值
$name = "Mike";
$email = "";
$stmt-&execute();
//为变量赋值
$name = "Larry";
$email = "";
$stmt-&execute();
//最后输出
echo "最后ID".$stmt-&insert_id."&br&";
echo "影响了".$stmt-&affected_rows."行&br&";
//关闭数据库连接
$mysqli-&close();
通过以上的预处理语句,我们也可以实现数据插入。
那么预处理语句有什么特点呢?
1. 效率上更高, 就是如果执行多次相同的语句,只有语句数据不同, 因为将一条语句在服务器端准备好,然后将不同的值传给服务器,再让这条语句执行。相当于编译一次,使用多次。
2.&安全上:可以防止SQL注入(? 占位)这样就可以防止非正常的变量的注入。
所以,推荐大家使用mysqli的预处理语句的方式,不仅效率高,而且更加安全。
&mysqli扩展有一系列的优势,相对于mysql扩展的提升主要有:面向对象接口、 prepared语句支持、多语句执行支持、事务支持、增强的调试能力、服务支持。
PHP数据对象(PDO)
PHP数据对象,是PHP应用中的一个数据库抽象层规范。PDO提供了一个统一的API接口可以,使得你的PHP应用不去关心具体要 连接的数据库服务器系统类型。也就是说,如果你使用PDO的API,可以在任何需要的时候无缝切换数据库服务器。
阅读(...) 评论() &mysql与mysqli的区别与用法说明_Mysql
作者:用户
也就是说 mysql每次链接都会打开一个连接的进程而mysqli多次运行mysqli将使用同一连接进程,从而减少了服务器的开销 有些朋友在编程的时候,使用new mysqli('localhost', usenamer', 'password', 'databasename');总是报错,Fatal error: Class 'mysqli' not found in d:\... mysqli类...
也就是说 mysql每次链接都会打开一个连接的进程而mysqli多次运行mysqli将使用同一连接进程,从而减少了服务器的开销 有些朋友在编程的时候,使用new mysqli('localhost', usenamer', 'password', 'databasename');总是报错,Fatal error: Class 'mysqli' not found in d:\... mysqli类不是php自带的吗。 不是默认开启的,win下要改php.ini,去掉php_mysqli.dll前的;,linux下要把mysqli编译进去 mysql是非持继连接函数而mysqli是永远连接函数,也就是说 mysql每次链接都会打开一个连接的进程而mysqli多次运行mysqli将使用同一连接进程,从而减少了服务器的开销 有些朋友在编程的时候,使用new mysqli('localhost', usenamer', 'password', 'databasename');总是报错,Fatal error: Class 'mysqli' not found in d:\... mysqli类不是php自带的吗。 不是默认开启的,win下要改php.ini,去掉php_mysqli.dll前的;,linux下要把mysqli编译进去 mysqli的面向过程的使用: 复制代码 代码如下: $conn = mysqli_connect('localhost', 'root', '123', 'db_test') or ('error'); $sql = "select * from db_table"; $query = mysqli_query($conn,$sql); while($row = mysqli_fetch_array($query)){ echo $row['title']; }
mysqli的面向对象的使用: 复制代码 代码如下: $conn = mysqli('localhost', 'root', '123', 'db_test'); $sql = "select * from db_table"; $query = $conn-&query($sql); while($row = $query-&fetch_array()){ echo $row['title']; }
mysql_pconnect打开的连接不会关闭(即使调用mysql_close也不会关闭,因为对其无效), 类似于连接缓冲池,如果下次有来自于同一个机器的同一个用户名 对同一个数据库的连接,php会自动使用上次已经建立的连接,而不需要再重新建立一个。 好处:是省去了每次与数据库建立连接的开销, 坏处:是需要浪费一些内存,占用一些连接, 所以如果用户访问量大的时候会出现错误,要把mysql的max_connections参数改大一点, 或者使用mysql_connect()就解决问题。 首先两个函数都是用来处理DB 的。 首先, mysqli 连接是永久连接,而mysql是非永久连接。什么意思呢。 mysql连接每当第二次使用的时候,都会重新打开一个新的进程,而mysqli则只使用同一个进程,这样可以很大程度的减轻服务器端压力。 其次,mysqli封装了诸如事务等一些高级操作,同时封装了DB操作过程中的很多可用的方法。具体查看 http://cn.php.net/mysqli 应用比较多的地方是 mysqli的事务。 比如下面的示例: 复制代码 代码如下: $mysqli = new mysqli('localhost','root','','DB_Lib2Test'); $mysqli-&autocommit(false);//开始事物 $mysqli-&query($sql1); $mysqli-&query($sql2); if(!$mysqli-&errno){ $mysqli-&commit(); echo 'ok'; }else{ echo 'err'; $mysqli-&rollback(); }
以上是互联网用户为您的的内容,在阿里云内部有更多的关于mysql与mysqli的区别与用法说明_Mysql的内容,欢迎继续使用右上角搜索按钮进行搜索mysql、Mysqli、以便于您获取更多的相关信息。
本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:zixun-group@service.aliyun.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。
若您要投稿,删除文章请联系邮箱:zixun-group@service.aliyun.com
工作人员会在5个工作日内回复
Mysql教程栏目为您免费提供
相关信息,包括
的信息 ,所有
相关内容均不代表阿里云的意见!投稿、删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员5个工作日内回复。为什么网上教程 书上教程用的都是 mysql_connect()这一类的函数,我自己写却提示推荐使用 mysqli_connect()这种 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
已注册用户请 &
为什么网上教程 书上教程用的都是 mysql_connect()这一类的函数,我自己写却提示推荐使用 mysqli_connect()这种
09:57:14 +08:00用 Android 发布 · 2908 次点击
我在win7 64bit装的wamp server
21 回复 &| &直到
14:26:52 +08:00
& & 09:59:54 +08:00
你的教程太老了
& & 10:02:04 +08:00
mysql_connect() 太老舊,的確該廢棄了.
現在推薦用 mysqli_connect() 或 PDO
& & 10:22:34 +08:00
可见PHP多SB
& & 10:28:40 +08:00 via Android
你的教程太老了除非是为了兼容,否则都是推荐使用mysqli
& & 10:43:53 +08:00
mysql_connect可能无法向更高版本的mysql服务器兼容.
& & 10:43:56 +08:00
看教程的时候先看下时间戳,挑最近的来看,或者直接在官网学
& & 11:00:16 +08:00 via Android
@ 教程是2014年的〒_〒
& & 11:00:42 +08:00 via Android
& & 11:38:31 +08:00
从php5.3开始,如果使用mysql_*系统的函数会报一个departed错误,建议使用mysqli或者pdo
& & 11:39:44 +08:00
mysqli更不该用, 本身就是mysql到pdo时期的过度产物, 你该用pdo的.
& & 11:45:19 +08:00 via Android
@ 受教了~
& & 11:48:04 +08:00 via Android
@ 技术更新的好快〒_〒
& & 11:55:08 +08:00
书都过时了。推荐使用pdo
& & 12:01:52 +08:00
@ 不是技术更新快, 你看的东西太老, php建议用mysqli取代mysql, 之后又把pdo从pecl移到标准库成为官方建议的事实标准是十年前的事.
& & 12:22:33 +08:00
@ pdo为了方便切换数据库,提供了一个统一的数据访问对象,例如从mysql切换到oracle,如果你没有这个需求,就应该用msyqli,mysqli提供的接口功能也更加丰富,性能相比pdo更高,不知道你从哪里得出结论不该用mysqli而是pdo的
& & 12:44:13 +08:00
@ 这问题实在没办法回答了, 因为经历过的都知道, 时处php4和php5演化时期,当时php官方灵光一现, 终于意识自己自作聪明搞个magic_quotes_gpc自动给数据addslashes让用户拼接数据库是多么傻逼的一件事(当时菜鸟php程序员干的最多的事就是觉得php多照顾程序员, 给参数自动转义, 嘲笑asp容易注入, 而正常的php程序员干的最多的则是一边骂php, 一边是判断gpc, 如果默认转义, 就把参数都stripslashes避免源数据被破坏, 等到了mysql_xxx里再addslashes), 于是终于干了点正常人该干的事, 就是匆忙上了带参数绑定的临时产物mysqli去替代php原先的mysql系列, 这个一开始的定位就是临时产物, 因为pdo在pecl里, 当时的成熟度还不适合合并进标准库, 由于是php4到php5的演化时期, 还带了当时的特色, 就是提供函数和对象两套调用入口, 函数入口兼容mysql系列, 对象入口为pdo铺路 , 而PDO系列才是正儿八经先进pecl再进standard慢慢打磨出来的,
至于切换数据库方便从哪里说起? 几个SQL数据库语法又不是通用的, 只是学java的jdbc和python的dbapi提供一个一致入口而已.
& & 13:51:09 +08:00
@ 不是做广告 我看的是imooc上面的教程 都是新的教程
& & 13:54:22 +08:00
& & 13:54:31 +08:00
@ : deprecated&+@skybr :嘛历史原因实在是……至于现在我是觉得用 mysqli 稍微要更舒服一点,虽然我之前一直是 mysqlnd+ADODB 来开发的。
& & 08:48:21 +08:00
这是告诉你理想和现实的差异,教条主义和实践主义的冲突 :)
& & 14:26:52 +08:00
@ 郁闷死了。。。
& · & 1697 人在线 & 最高记录 3762 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.1 · 21ms · UTC 15:44 · PVG 23:44 · LAX 08:44 · JFK 11:44? Do have faith in what you're doing.mysqli 连接数据库,为什么有的教程有 mysqli_close 这个语句,有的没有? - V2EX
mysqli 连接数据库,为什么有的教程有 mysqli_close 这个语句,有的没有?
326 天前 &aliehuhu
mysqli_close 这个是可有可无的?想找一个简单的 php mysqli 类
1012 次点击所在节点 &
gouchaoer326 天前脚本退出和 mysql 的 tcp 连接断掉就自动关闭了,原本的 mysqli/pdo 可用性已经很不错了,写点小东西直接用,用在框架里面各家都有包装
iyaozhen326 天前官方文档有写。PHP-fpm 的运行方式的话可以不用关闭(运行完都释放了),个人也推荐不关闭,代码简洁。但如果是 PHP-cli 且常驻内存就需要关闭了
hcymk2326 天前@ 这个比较简单了。
第 1 页 / 共 1 页&
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到
上打开本讨论主题的完整版本。
是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
is a community of developers, designers and creative people.

我要回帖

更多关于 接口和类的区别 的文章

 

随机推荐