数据库相关问题


Posted in PHP onOctober 09, 2006

数据库相关问题
这节将讨论PHP和数据库之间最普通的问题。夸张地说,PHP几乎可以操作今天市面上有的所有的数据库。
1. 我听说PHP可以操作微软的SQL Server.应该怎样做?
2. 我可以操作微软 Access 数据库吗?
3. 我升级到了PHP 4, 现在我的mysql总是告诉我: "Warning: MySQL: Unable to save result set in ...". 这是怎么回事?
4. 安装完共享mysql支持后, 一装入libphp4.so Apache 就 dumps core . 这个问题可以修复吗?
5. 为什么我总得到这样的错误消息: : "Warning: 0 is not a MySQL result index in <file> on line <x>" or "Warning: Supplied argument is not a valid MySQL result resource in <file> on line <x>?
1. 我听说PHP可以操作微软的SQL Server.应该怎样做?
在Windows平台下, 你只要使用包里所含的ODBC驱动程序就可以了。
在Unix平台下, 你可以使用Sybase-CT driver 来操作 Microsoft SQL Servers。因为它们的协议(至少绝大部份的产品) 是完全兼容的. Sybase 有一个免费的 Linux systems 版本. 对另外一些的Unix系统来说,你可能需要联系 Sybase,以得到正确的库文件 . 也可以参照下面一些问题的答案。
2. 我可以操作 Microsoft Access数据库吗?
是的。如果你是在 Windows 9x/Me, 或 NT/2000下运行,你已经有了所有必须的工具。 你可以使用ODBC 和 Microsoft's ODBC drivers for Microsoft Access databases。
如果你是在 Unix 下运行PHP,想要和Windows下的 MS Access 通讯,那么你需要Unix ODBC drivers. OpenLink Software 提供了一个 Unix-based ODBC drivers。 你可以下载一个试用(不过期)的 pilot 程序, 商业版本的价格定位在 $675
另外一种办法是使用带 Windows ODBC驱动的 SQL server来存诸数据,然后你可以用Microsoft Access (ODBC) and PHP (内置SQL Server驱动)来操作这个库。或者使用另一种文件格式, Access 和 PHP 都可以打开的, 比如操作系统文件或dBase 数据库等。关于这 OpenLink software的Tim Hayes 写了如下的文字: 在你可以使用PHP直接操作一种数据库里,使用另外的库作为中间件不是一个好的主意。
--例如用OpenLink's 驱动. 如果你确实需要中间件库, OpenLink 现在发布了 Virtuoso (虚拟数据库引擎), 可以运行在NT, Linux 其它的 unix平台.
      请参阅 website 免费下载.

另一个成功的范例子是使用Windows下的Mysql(通过mysql ODBC),来同步化 Access 数据库. Steve Lawrence 写到:

按照Mysql的指引安装你的平台下的Mysql. 最新版本可以从 http://www.mysql.com/ 得到(从你最近的镜像点!). 除了设置一个Mysql的数据库,不需要其它特别的配置, 设置用户帐号, 你应该把用户的主机域 设为“%”, 确认你的服务器名、数据库名等
在Mysql的站点上下找Mysql ODBC驱动,最新的版本应该是 myodbc-2_50_19-win95.zip (NT)。在你的Windows下安装它. 你可以用工具包里的工具测试安装是否成功。
在你的 ODBC 管理器(控制面板里)里创建一个用户和系统的dsn。建一个DSN名, 输入你的主机名, 用户名(mysql), 口令,端口号, 等你在第一步里设置的数据。
完全安装Access, 这一步使你安装必须的工具驱动.. 至少 你需要管理连接的数据库表。
现在最有趣的事发生了! 建一个新的Access数据库。 在表里右键,选"link Tables"(链接表), 或者在 “文件” 菜单 下, 选“ Get External Data ”(获取外部数据) 然后“ Link Tables”(链接表). 当对话框打开时,选择文件类型: ODBC. 选择系统DSN,你在第三步创建的DSN名. 然后选要链接的表。按“确定”, 哦! 你现在可以在你的Mysql管理器上打开这个表, 可以增加/编辑/删除 数据! 你也可以建立查询, 输入/输出表到 MySQL, 建立表单及报表,等.

Tips and Tricks:

你可以建立Access表,把它输出到 MySQL, 也可以链接回来. 它会使创建表快些.
当你在Access里创建表时, 必须设置主键。 同样,在Mysql里连到access时,也要有主键。
如果你在 MySQL时选了一张表, 你不得不在Access里重新链接.去>add-ins>链接表管理器

3. 我升级到了PHP 4, 现在我的mysql总是告诉我: "Warning: MySQL: Unable to save result set in ...". 这是怎么回事?
大部分这样的问题,是因为 PHP 4 编译选项 '--with-mysql'没有标明你的Mysql的路径。 这样PHP就会使用它内建的MySQL库. 如果你的系统运行在这样的平台下, PHP 3 作为 Apache 模块, 或者 auth-mysql, 它们使用另外版本的Mysql驱动,这样在两个不同版本的Mysql客户端驱动上就会存在冲突。
重新编译PHP 4, 增加Mysql的路径信息, '--with-mysql=/your/path/to/mysql' 通常都能解决这个问题。
4. 安装完共享mysql支持后, 一装入libphp4.so Apache 就 dumps core . 这个问题可以修复吗?
如果你的Mysql是用 pthreads 连接的,将会发生这种情况。请使用 ldd。 如果已使用, grab the MySQL tarball and 重新编译, 或 从源代码rpm编译,移去相关文件里的打开 threaded client 代码的开关 。如果以上的两种方法都不能修复这个错误,那么重新编译新的PHP库支持新的Mysql。
5. 为什么我总得到这样的错误消息: : "Warning: 0 is not a MySQL result index in on line " or "Warning: Supplied argument is not a valid MySQL result resource in on line ?
你正在使用的结果集变量值是0。0意味着 因为某种原因你的查询失败了。在你取得结果集之前,你必须检查提交查询失败的原因。正确的写法应该如下: $result = mysql_query("SELECT * FROM tables_priv");
if (!$result) {
    echo mysql_error();
    exit;
}

or $result = mysql_query("SELECT * FROM tables_priv")
    or die("Bad query: ".mysql_error());

 

PHP 相关文章推荐
坏狼的PHP学习教程之第2天
Jun 15 PHP
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
Jul 02 PHP
PHP 线程安全与非线程安全版本的区别深入解析
Aug 06 PHP
php多任务程序实例解析
Jul 19 PHP
php生成二维码
Aug 10 PHP
微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
Jan 12 PHP
微信支付开发发货通知实例
Jul 12 PHP
PHP从二维数组得到N层分类树的实现代码
Oct 11 PHP
php微信开发之音乐回复功能
Jun 14 PHP
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
Jan 07 PHP
如何运行/调试你的PHP代码
Oct 23 PHP
PHP7 其他修改
Mar 09 PHP
编译问题
Oct 09 #PHP
PHP 和 COM
Oct 09 #PHP
如何获得PHP相关资料
Oct 09 #PHP
VML绘图板②脚本--VMLgraph.js、XMLtool.js
Oct 09 #PHP
example1.php
Oct 09 #PHP
一个ftp类(ini.php)
Oct 09 #PHP
php中数据的批量导入(csv文件)
Oct 09 #PHP
You might like
《星际争霸2》终章已出 RTS时代宣告终结
2017/02/07 星际争霸
php笔记之常用文件操作
2010/10/12 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
2017/04/18 PHP
PHP设计模式(四)原型模式Prototype实例详解【创建型】
2020/05/02 PHP
jQuery EasyUI API 中文文档 - Draggable 可拖拽
2011/09/29 Javascript
js 数组操作之pop,push,unshift,splice,shift
2014/01/29 Javascript
js中top的作用深入剖析
2014/03/04 Javascript
JS实现网页背景颜色与select框中颜色同时变化的方法
2015/02/27 Javascript
HTML5+setCutomValidity()函数验证表单实例分享
2015/04/24 Javascript
JavaScript中0和&quot;&quot;比较引发的问题
2016/05/26 Javascript
基于css3新属性transform及原生js实现鼠标拖动3d立方体旋转
2016/06/12 Javascript
Bootstrap框架的学习教程详解(二)
2016/10/18 Javascript
AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】
2016/11/02 Javascript
JavaScript实现一个空中避难的小游戏
2017/06/06 Javascript
js 监控iframe URL的变化实例代码
2017/07/12 Javascript
vue中如何使用ztree
2018/02/06 Javascript
vue项目中公用footer组件底部位置的适配问题
2018/05/10 Javascript
解决mpvue + vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用问题
2018/08/03 Javascript
angularjs $http调用接口的方式详解
2018/08/13 Javascript
vue-cli+iview项目打包上线之后图标不显示问题及解决方法
2019/10/16 Javascript
Vue-Cli项目优化操作的实现
2019/10/27 Javascript
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
Python实现的几个常用排序算法实例
2014/06/16 Python
数据挖掘之Apriori算法详解和Python实现代码分享
2014/11/07 Python
Python编程产生非均匀随机数的几种方法代码分享
2017/12/13 Python
python使用Paramiko模块实现远程文件拷贝
2019/04/30 Python
Python csv模块使用方法代码实例
2019/08/29 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
2020/01/18 Python
python和php学习哪个更有发展
2020/06/17 Python
HTML5中的postMessage API基本使用教程
2016/05/20 HTML / CSS
法人单位适用的授权委托书
2014/09/19 职场文书
学雷锋感言
2015/08/03 职场文书
CSS 还能这样玩?奇思妙想渐变的艺术
2021/04/27 HTML / CSS
Python中常见的导入方式总结
2021/05/06 Python
JavaScript实现登录窗体
2021/06/22 Javascript
使用pipenv管理python虚拟环境的全过程
2021/09/25 Python