手机版

PHP和数据库之间关系的常见问题

2019-09-10 阅读 :

本节包括 PHP 和数据库之间关系的常见问题。 事实上, PHP 可以访问如今现有的任何数据库。

  1. 听说 PHP 有可能访问 Microsoft SQL Server,怎样访问?
  2. 能访问 Microsoft Access 数据库吗?
  3. 为什么我已经使用了十多年的 MySQL 扩展(ext/mysql) 不建议继续使用了? 它被废弃了吗?我应该选择什么替代方案?如何迁移到新的方案?
  4. 为什么我得到类似如下的错误: “Warning: 0 is not a MySQL result index in <file> on line <x>” 或者 “Warning: Supplied argument is not a valid MySQL result resource in <file> on line <x>”?
听说 PHP 有可能访问 Microsoft SQL Server,怎样访问?

在 Unix 机器中,你可以使用 PDO_ODBC 或者 Unified ODBC API 来访问 Microsoft SQL Server 数据库。

在 Windows 机器中,你可以使用 PDO_SQLSRV 或 SQLSRV 来访问 Microsoft SQL Server 数据库。

同时,也可以参考下一个问题。

能访问 Microsoft Access 数据库吗?

可以。如果完全在 Windows 9x/Me/NT/2000 下运行,那已经有了所有所需的工具, 可以用 ODBC 和 Microsoft's ODBC drivers for Microsoft Access database。

如果在 Unix 下运行 PHP 而想访问 Windows 中的 MS Access, 那需要 Unix ODBC 驱动程序。 » OpenLink Software 有一个基于 Unix 的 ODBC 驱动程序可以做这件事。

另外一个替代方案是用带 Windows ODBC 驱动的 SQL Server 并用它来储存数据, 可以通过 Microsoft Access(用 ODBC)和 PHP(用内置驱动)来访问, 或者用一个 Access 和 PHP 都识别的中间文件格式, 例如 flat 文件或者 dBase 数据库。 关于这一点 OpenLink Software 的 Tim Hayes 写道:

当可以通过 ODBC 直接从 PHP 访问数据库时——例如用 OpenLink 的驱动程序, 使用其它数据库做中间媒介不是一个好主意。 如果确实需要一个中间文件格式, OpenLink 已经发布了对应于 Windows NT,Linux 和其它 Unix 平台的 Virtuoso(一个虚拟数据库引擎)。 请访问我们的 » 网站来免费下载。

还有一个已被证实有效的选择是在 Windows 下用 MySQL 和它的 MyODBC 驱动来同步数据库。 Steve Lawrence 写道:

 

  • 根据 MySQL 的说明在你的平台上安装 MySQL。可以从 » http://www.mysql.com/得到最新版。 除了设定数据库和配置用户帐号以外不需要特殊的配置, 应该在 host 字段中放一个 % 或者要用来访问 MySQL 的 Windows 机器名。 记下自己的服务器名, 用户名和密码。
  • 从 MySQL 网站下载 MyODBC for Windows 驱动程序。 在你的 Windows 机器中安装它。 可以用此程序中包括的工具来测试其操作。
  • 用控制面板中的 ODBC 管理器新建一个用户或系统 dsn, 设定 dsn 名称, 输入你在第一步中配置的 MySQL 数据库的主机名,用户名,密码,端口等。
  • 完整安装 Access, 这样可以确保得到适当的插件... 至少需要安装 ODBC 支持和连接表管理器。
  • 新建一个 Access 数据库。 在 Table 窗口点击右键并选择 Link Tables, 或者在 File 菜单下选择 Get External Data -> Link Tables。 当文件浏览窗口打开后,选择文件类型为:ODBC。 接着选择 System dsn 以及在第三步建立的 dsn 的名字。 再选择要连接的表,点击 OK。 现在你可以在你的 MySQL 服务器中打开表并新建/删除/编辑数据了! 也可以构造查询,导入/导出表到 MySQL,构造表单和报告等。

提示与技巧:

  • 可以在 Access 中构造表并导出到 MySQL 中, 再把它们连接回来。 这样可以使表的建立更快。
  • 在 Access 中建立表时, 必需定义一个基本键名来取得表的写权限。 确认在把表连接到 Access 之前在 MySQL 中建立了基本键名。
  • 如果在 MySQL 中修改了表, 必须重新连接到 Access。 打开 Tools>Add-ins>Linked table manager, 找到你的 ODBC DSN,然后在这里选择要重新连接的表。 也可以在这里移动 dsn 源, 在点击 OK 之前选中 “always prompt for new location”。
为什么我已经使用了十多年的 MySQL 扩展(ext/mysql) 不建议继续使用了? 它被废弃了吗?我应该选择什么替代方案?如何迁移到新的方案?

在 选择一种 MySQL API 一节中 描述了 3 中 MySQL 扩展。 不应该继续使用旧的 API 了,可能将来的某一天旧 API 就会被废弃甚至从 PHP 中移除。 当然,旧的 API 曾经是非常主流的,很多用户都用了它,所以这个被废弃及移除的过程不会太快。 但是仍然强烈建议使用 mysqli 或 PDO_MySQL 来访问 MySQL 数据库。

自动迁移脚本目前还没有。 mysqli API 包括了面向过程和面向对象的两种风格的调用方式,并且面向过程的版本中提供的 API 和 ext/mysql 是非常相似的。

不可以同时混合使用这几种 MySQL API。 例如,你不可以把一个 mysqli 的连接资源传入到 PDO_MySQL 或者 ext/mysql 中去使用。

为什么我得到类似如下的错误: “Warning: 0 is not a MySQL result index in <file> on line <x>” 或者 “Warning: Supplied argument is not a valid MySQL result resource in <file> on line <x>”?

你试图用一个值为 0 的结果资源号。 0 表示你的查询由于某原因失败了, 需要在提交查询之后 和在使用返回结果资源号之前检查错误。 正确的方法是用类似如下的代码:

<?php

$result = mysql_query("SELECT * FROM tables_priv");
if (!$result) {
    echo mysql_error();
    exit;
}
?>

或者
<?php

$result = mysql_query("SELECT * FROM tables_priv")
    or die("Bad query: " . mysql_error());
?>
本文标题:PHP和数据库之间关系的常见问题 - 服务器教程_服务器技术_服务器知识_vps教程
本文地址:https://www.helloaliyun.com/tutorial/445.html

相关文章

  • CentOS 7 常用命令(系统关机、重启以及登出)

    关机:(系统的关机、重启以及登出 ) # 关闭系统(1)[root@localhost ~]# shutdown -h now # 关闭系统(2)[root@localhost ~]# init 0 # 关闭系统(3)[root@localhost ~]# telinit 0 # 按预定时间关闭系统[root@localhost...

    2019-12-07 服务器教程
  • linux重启命令 reboot与shutdown -r now的区别与联系

    在linux命令中reboot是重新启动,shutdown -r now是立即停止然后重新启动,都说他们两个是一样的,其实是有一定的区别的。shutdown命令可以安全地关闭或重启Linux系统,它在系统关闭之前给系统上的所有登录用户提示一条警告...

    2019-12-07 服务器教程
  • CentOS 7 如何使用命令重启或关机

    安装GNOME的朋友们首先切换到字符界面。切换到字符界面的方法如下: 先登陆进入系统,进入图形化界面,然后按Ctrl+Alt+F6(笔记本的是Ctrl+Alt+shift+Fn),进入字符界面。关机命令:shutdown或poweroffshutdown:shutdown -h now...

    2019-12-07 服务器教程
  • CentOS 7 正确关机重启的命令方法

    linux主要用于服务器领域,而在服务器上执行一项服务是永无止境的,除非遇到特殊情况,否则不会关机。和Windows不同,在linux系统下,很多进程是在后台执行的。在屏幕背后,可能有很多人同时在工作。如果直接按下电源的按钮,其他...

    2019-12-07 服务器教程
  • CentOS下的yum upgrade和yum update区别,没事别乱用!

    说明:生产环境对软件版本和内核版本要求非常精确,别没事有事随便的进行yum update操作!!!!!!!!!yum update: 升级所有包同时也升级软件和系统内核yum upgrade:只升级所有包,不升级软件和系统内核...

    2019-12-07 服务器教程
你可能感兴趣
热门浏览