zoukankan      html  css  js  c++  java
  • [转载]在php5.1.4中使用mysqli

    [转载]在php-5.1.4中使用mysqli

    作者: piggy  发布日期: 2006-6-20    查看数: 65   出自: http://www.phpx.com/viewarticle.php?id=119200
    我一直都在用php4,很少接触php5。由于学习的需要,慢慢去接触了php5,了解了php5的面向对象,MySQL i扩展库,SPL及pdo等等新的特性。请别笑,我对php5接触得还是比较少。 为了能够使用php5,我搭建了php-5.1.4 mysql-5.0.22 IIS-5.1运行环境,安装php及mysql的资料比较多,这里不重复了。 我进阶的第一个目标就是mysqli,为了使用mysqli,你得在php.ini里增加一行extension=php_mysqli.dll,这个dll内置在php5.1.4的ext文件夹里,重启www服务即可以使用mysqli扩展库了(部份用户可能需要重启)。 配置完后,使用mysqli的面向对象编程方式编写如下代码: [php] <?php $db = new mysqli("localhost","root","123456","test"); $db->set_charset("utf8"); $rs = $db->query("SELECT * FROM `gallery_ablum`"); while($row = $rs->fetch_assoc()) { echo $row['Name'],"
    "; } $rs->close(); $db->close(); ?> [/php] 兴冲冲的放在网站下运行该代码,结果却发现脚本有错误“使用了未定义的set_charset函数”,难道pphp5.1.x不再支持mysqli?于是我注释了第二行,结果却发现,程序是成功执行成功的!我很开心,终于可以显示数据了,虽然有一部份数据是乱码(乱码是因为我用了utf8编码,而mysqli连接默认用了laint1) 接下来我一口气试了mysqli里的函数,结果发现大部份还是可用的。但字符集的问题就不可以解决了吗?如果不能解决,对用其它数据库编码的的程序,就不能使用了。于是我试试将第二行的语句换成$db->query("SET NAMES utf8");,执行成功,却没能像我预期中的那样解决了乱码,使用echo $db->character_set_name();查看当前的编码,还是laint1。 我还不死心,上php.net里查看资料,终于知道php.net里发布的php_myqli.dll真的不能使用这个函数,而mysql却提供了这个dll。下载地址是:http://dev.mysql.com/downloads/connector/php,这个页面里,mysql声明这个connector与php.net提供的唯一区别就是:mysql提供的是最新版本的!而且mysql建议我们使用php5.1.4及mysql5.0.22,所以也只提供了这二个相关的connector下载。 connector的安装很简单,停止www服务覆盖根目录下的libmysql.dll及ext目录下的php_mysqli.dll文件即可。 当我开心的打开浏览器执行前面的代码时,却出现“Unable to load dynamic library php_mysqli.dll ,无法加载”的错误。我即刻晕倒。难道php与mysql真的是不是冤家不对头吗? 我还是很不情愿,不甘心这样放弃我的php5之路,于是我上google查资料,搜索出来的结果比较一致的说法是缺少libmysql.dll,需要将这个库放到php路径里或system32里。我的php目录里明明有libmysql.dll呀(这个libmysql.dll是mysql connector里提供的),难道要放在system32里?copy一份libmysql.dll到system32,重启再执行php,还是失败。 后来我上mysql.com的技术支持里查资料,看能不能找到一些头绪。经过大量的浏览后,发现有一个人说用depends来查查,刚开始我还以为是一个自行开发的软件,作者在此作一个广告,不过后来我真的没有办法了,只有死马当活马医了,上去http://www.dependencywalker.com下载了一个depends work,原来这个东西是一个类似于脱壳的软件。结果我用它查到了mysql的connector里用了vc7来编译dll的,而我的机器是没有安装vc7的运行库,所以不能装载php_mysqli.dll。 原因找到了,我立即就上http://www.dll-files.com/dllindex/dll-files.shtml?msvcr71下载msvcr71.dll运行库,拷贝到system32系统目录下(顺便把刚才copy进来的libmysql.dll删除了,在php目录下保持一份就可以了),重启,浏览,终于可以执行mysql新的特性了。 (注:为了方便自己的调试,我打开了php.ini里的display_errors及display_startup_errors) 上面是我解决的整个过程,实质上的步骤无需这么多,安装完php5.1.4后,上mysql网站下载mysql的php connector覆盖php目录下的相应文件。再搜索下自己系统盘里是否有msvcr71.dll这个文件,如果不存在于系统目录里,就下载一个并放入system32系统目录里。 另外,如果系统是ntfs的格式,还得注意权限的问题。特别是刚才从网上下载过来的文件,默认的权限可能不够。如果打开了display_startup_errors参数,会有Unable to load dynamic library ***.dll 拒绝访问的字眼。这时你就得注意下权限的问题了。 第一次这么认真发贴,主要是想一些刚学mysqli的朋友提供点有用的资料,而不是讨论mysqli好不好的问题。由于,也很希望能与大家继续讨论下php5里的新特性,特别是pdo及pear方面,我的邮箱zhiouzhu(at)gmail.com,欢迎你们的指点。
  • 相关阅读:
    Creating a generic Web Parts for hosting ASP.NET User Controls
    Speed Up SQL Server Apps 提高SQL Server应用程序的运行效率 (Part 1)
    How to use CreateChildContorls method inherited from System.Web.UI.Control
    How to quickly access Web Part Management Page
    SQL Script tips for MS SQL Server
    How to enable single signon service on the SPS
    A brief summary of UML & Rational Rose – Use Case Diagram, Part II
    Borland Together for Visual Studio.Net V2.0 安装问题
    Speed Up SQL Server Apps 提高SQL Server应用程序的运行效率 (Part 2)
    体验ReSharper V1.0 for VS.Net 2003 Part I
  • 原文地址:https://www.cnblogs.com/huang/p/478339.html
Copyright © 2011-2022 走看看