PHP使用pdo连接access数据库并循环显示数据操作示例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP使用pdo连接access数据库并循环显示数据操作示例相关的知识,希望对你有一定的参考价值。

参考技术A 本文实例讲述了php使用pdo连接access数据库并循环显示数据操作。分享给大家供大家参考,具体如下:
PDO连接与查询:
try

$conn
=
new
PDO("odbc:driver=microsoft
access
driver
(*.mdb);
dbq=".realpath("MyDatabase.mdb"))
or
die("链接错误!");
//echo
"链接成功!";

catch(PDOException
$e)
echo
$e->getMessage();

$sql
=
"select
*
from
users";
1.
foreach()方法
foreach
($conn->query($sql)
as
$row)

$row["UserID"];
$row["UserName"];
$row["UserPassword"];

2.
while()方法
$rs
=
$conn->query($sql);
$rs->setFetchMode(PDO::FETCH_NUM);
while($row=$rs->fetch())
$row[0];
$row[1];
$row[2];

php使用PDO抽象层获取查询结果,主要有三种方式:
(1)PDO::query()查询。
看下面这段php代码:
<?php
//PDO::query()查询
$res
=
$db->query('select
*
from
user');
$res->setFetchMode(PDO::FETCH_NUM);
//数字索引方式
while
($row
=
$res->fetch())
print_r($row);

?>
(2)PDO->exec()处理sql
<?php
//PDO->exec()处理sql
$db->setAttribute(PDO::ATTR_ERRMODE,
PDO::ERRMODE_EXCEPTION);
$res
=
$db->exec("insert
into
user(id,name)
values('','php点点通')");
echo
$res;
?>
(3)PDO::prepare()预处理执行查询
<?php
//PDO::prepare()预处理执行查询
$res
=
$db->prepare("select
*
from
user");
$res->execute();
while
($row
=
$res->fetchAll())

print_r($row);

?>
setAttribute()
方法是设置属性,常用参数如下:
PDO::CASE_LOWER
--
强制列名是小写
PDO::CASE_NATURAL
--
列名按照原始的方式
PDO::CASE_UPPER
--
强制列名为大写
setFetchMode方法来设置获取结果集的返回值的类型,常用参数如下:
PDO::FETCH_ASSOC
--
关联数组形式
PDO::FETCH_NUM
--
数字索引数组形式
PDO::FETCH_BOTH
--
两者数组形式都有,这是默认的
PDO::FETCH_OBJ
--
按照对象的形式,类似于以前的
mysql_fetch_object()
对上面总结如下:
查询操作主要是PDO::query()、PDO::exec()、PDO::prepare()。
PDO->query()

处理一条SQL语句,并返回一个“PDOStatement”
PDO->exec()

处理一条SQL语句,并返回所影响的条目数
PDO::prepare()主要是预处理操作,需要通过$rs->execute()来执行预处理里面的SQL语句
最后介绍两个常用的函数:
(1)fetchColumn()获取指定记录里一个字段结果,默认是第一个字段!
<?php
$res
=
$db->query('select
*
from
user');
//获取指定记录里第二个字段结果
$col
=
$res->fetchColumn(1);
echo
$col;
?>
(2)fetchAll(),从一个结果集中获取数据,然后存放在关联数组中
<?php
$res
=
$db->query('select
*
from
user');
$res_arr
=$res->fetchAll();
print_r($res_arr);
?>
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP基于pdo操作数据库技巧总结》、《php+Oracle数据库程序设计技巧总结》、《PHP+MongoDB数据库操作技巧大全》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
您可能感兴趣的文章:PHP使用PDO连接ACCESS数据库PHP数据库链接类(PDO+Access)实例分享php中mysql连接方式PDO使用详解关于php连接mssql:pdo
odbc
sql
serverPhp中用PDO查询Mysql来避免SQL注入风险的方法php中在PDO中使用事务(Transaction)全新的PDO数据库操作类php版(仅适用Mysql)php使用pdo连接并查询sql数据库的方法php使用pdo连接mssql
server数据库实例PHP实现PDO的mysql数据库操作类

在 PHP 中创建与 PDO 的连接时出错

【中文标题】在 PHP 中创建与 PDO 的连接时出错【英文标题】:Error on creating connection to PDO in PHP 【发布时间】:2010-11-28 22:59:37 【问题描述】:

今天,为了迁移到php 5.30,我删除并重新安装了最新版本的lampp,突然一个非常简单的应用程序无法连接到mysql数据库。我正在使用 PDO 连接,并收到以下错误:

Warning: PDO::__construct() [pdo.--construct]: [2002] Invalid argument (trying to connect 
via unix://) in /home/raistlin/www/todoapp/home.php on line 9

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002]
Invalid argument' in /home/raistlin/www/todoapp/home.php:9 Stack trace: #0
/home/raistlin/www/todoapp/home.php(9): PDO->__construct('mysql:host=loca...', 'USER', 
'PASSWORD') #1 main thrown in /home/raistlin/www/todoapp/home.php on line 9

为了调试,我暂时没有发现错误。

以下代码足以在我的系统上复制问题:

<?php
$DBACCESS = array(
    "connstring"=>"mysql:host=localhost;dbname=todoapp",
    "host"=>"localhost",
    "user"=>"user",
    "password"=>"password",
    "todoapp"=>"todoapp"
    );

    echo implode('<br \>',$DBACCESS);

    $dbh = new PDO($DBACCESS['connstring'],$DBACCESS['user'],$DBACCESS['password']);

    $dbh = null;
?>

在网上查找时,我发现一两个人有同样的问题,但他们都没有收到回复,更不用说工作了。有谁知道发生了什么?我在配置中遗漏了什么吗?我需要做什么来修复它?

【问题讨论】:

【参考方案1】:

此类错误的最常见原因是 MySQL 没有运行。

【讨论】:

我已经检查过了。甚至到了关闭它并重新启动它的地步。 你怎么知道它是最常见的【参考方案2】:

通常意味着你需要指定 TCP/IP (1),或者告诉 MySQL 你的 Unix 套接字在哪里 (2):

    “mysql:host=127.0.0.1”或“mysql:host=localhost;port=3306” “mysql:unix_socket=/var/run/mysqld/mysqld.sock”

【讨论】:

我不确定为什么 MySQL 有时会使用“localhost”来表示“我将使用 Unix 套接字” 完美。使用选项 2 解决了问题,虽然使用 xampp lampp 安装,我需要使用 /opt/lampp/var/mysql/mysql.sock。 当然。很高兴你能找到插座——我只是在里面扔了一个例子,祈祷你能找到它。 :) 这里也有同样的问题。 @krdluzni,看到你的评论,我刚刚这样做了:pdo_mysql.default_socket=/opt/lampp/var/mysql/mysql.sock 在 /opt/lampp/etc/php.ini 文件中,它起作用了。否则我会想知道我必须在 Zend Framework 中犯了什么配置错误。所以谢谢你发布这个! 只需在您的设置中添加端口,例如 'host' =&gt; env('DB_HOST', '192.168.1.165'), 'port' =&gt; env('DB_PORT', '3317'), instead 定义 192.168.1.165:3317【参考方案3】:

您可能想要修改 php.ini,以便 PDO 可以通过指定 pdo_mysql.default_socket = /opt/lampp/var/mysql/mysql.sock(在 xampp 的情况下)找到 mysql.sock。更改 php.ini 后不要忘记重新启动 Apache。

(对不起,这似乎是一个重复的解决方案)。

【讨论】:

【参考方案4】:

您也可以在您的数据库连接字符串中使用 127.0.0.1,而不是指定“localhost”来完全避免这个问题。

【讨论】:

接受的答案是给系统管理员的,这个是给开发者的;)谢谢!【参考方案5】:

我在这个项目中使用 MAMP 2.0.1 和 Symfony 1.4 with Doctrine。

第三个选项对我有用,只需稍作修改: 在 /config/databases.yml

dsn: 'mysql:unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock;dbname=MY_DB_NAME;'

【讨论】:

以上是关于PHP使用pdo连接access数据库并循环显示数据操作示例的主要内容,如果未能解决你的问题,请参考以下文章

使用 PDO 的 MS Access PHP 连接“找不到驱动程序”错误

使用 ODBC 使用 msaccess 创建 PHP PDO 连接时出现致命错误

PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】

PDO 留下 .laccdb 文件

如何在foreach循环中显示来自PDO的数据

PHP实现的pdo连接数据库并插入数据功能简单示例