首 页   · 站长博客 · 用户注册 · 会员登陆  · 会员排行  ·最新主题  ·最近回复  精华区  版权声明  ·论坛管理
  当前登录身份:游客,请先登录。  笔名: 口令: 验证码:   
楼 主  index »  PHP+MYSQL编程 » [原创]php+access编程探讨  


  作者:tester
  注册时间:2004-11-26
  主题/回复:2/11
  积分:420
  等级:★★☆(五级)
  称号:略有小成

  dfsdfsdfsdfsd@ey..
  未提供
  www.

 

 发表:2004-11-26 06:35:03 阅读 4922 次 回复 14 次 得分4  |   字号 字色
[原创]php+access编程探讨
建立access数据库db.mdb,里面有一个表gbook,用来存放留言信息,含有两个字段name,content
新建文件con.php,用来连接access数据库db.mdb,代码如下:
<?php
$conn = new com("ADODB.Connection"); 
$connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("db.mdb"); 
$conn->Open($connstr); 
$rs = new com("ADODB.RecordSet"); 
?>

新建文件index.php,用来发表留言和显示留言,代码如下:
<?php include("conn.php") ?>
<form method=post action=send.php name="f">
<table><tr><td>你的大名:<input type=text name="name" size=12>
</td></tr>
<tr><td>留言内容:<textarea cols=40 rows=4 name="content">
</textarea>
</td></tr>
<tr><td><input type=submit name="sub" value="提交">
</td></tr>
</table>
</form>
<br>以下为各位的留言:<br>
<?php 
$rs->open("select * from gbook",$conn,1,1);
while (!$rs->EOF) { 

$fld0 = $rs->Fields("name"); 
$fld1 = $rs->Fields("content"); 

echo "留言姓名:$fld0->value 留言内容:$fld1->value<hr>"; 
$rs->MoveNext(); 

?>

再建文件send.php,用来处理表单提交,即用来存储留言,代码如下:
<?php include("conn.php") ?>
<?php
if($_POST['sub']<>"")
{
if($_POST['name']=="")
echo"大名不能为空!<a href=javascript:history.go(-1)>返回</a>";
elseif($_POST['content']=="")
echo"留言内容不能为空!<a href=javascript:history.go(-1)>返回</a>";
else
{$n=$_POST['name'];
$c=$_POST['content'];
echo $_POST['name'];
$rs->open("select * from gbook",$conn,1,3);
$rs->addnew();
$rs->fields("name")== $n;
$rs->fields("content")== $c;
$rs->update();
$rs->close();
echo"留言成功!<meta http-equiv=refresh content='1;url=index.php'>";
}
}
?>

运行时,留言虽然成功了,但实际上只是向数据库中插入了一条空记录,请问这是怎么回事,上述代码为我测试的代码,请大家帮忙解决一下。
我想知道在php连接access数据库的时候,怎么通过ado插入记录,具体代码是不是有错误,请大家指出,特别是send.php文件。
 
 1#楼  
 
  回复人:一起PHP
  注册时间:2004-02-27
  主题/回复:247/1521
  积分:4649
  等级:★★★★★☆(十一级)
  称号:论坛圣人

   
 1#楼 发表于2004-11-26 07:14:07  评分:1 

这种不需要设置数据源的 php+access 编程思路,非常好。
建议有兴趣的朋友共同研究。
 2#楼  
 
  回复人:一起PHP
  注册时间:2004-02-27
  主题/回复:247/1521
  积分:4649
  等级:★★★★★☆(十一级)
  称号:论坛圣人

   
 2#楼 发表于2004-11-26 07:15:40  评分: 

在qq上商量的方法,管用不?

我的建议,还是用 $conn->execute()的形式添加数据。

如果成功了,贴出来代码大家都学习一下。
 3#楼  
 
  回复人:tester
  注册时间:2004-11-26
  主题/回复:2/11
  积分:420
  等级:★★☆(五级)
  称号:略有小成

   
 3#楼 发表于2004-11-26 20:53:08  评分:× 

测试成功了~~~~
send.php的具体代码如下:
<?php include("conn.php") ?>
<?php
if($_POST['sub']<>"")
{
if($_POST['name']=="")
echo"大名不能为空!<a href=javascript:history.go(-1)>返回</a>";
elseif($_POST['content']=="")
echo"留言内容不能为空!<a href=javascript:history.go(-1)>返回</a>";
else
{
$n=$_POST['name'];
$c=$_POST['content'];
//插入留言的sql语句
$sql="insert into gbook(name,content) values('$n','$c')";
//用rs的open()方法执行成功
$rs->open($sql,$conn,1,3);
//用$conn的execute()方法同样执行成功。$conn->execute($sql);
echo $_POST['name'];
/*注释掉$rs的addnew()操作
$rs->open("select * from gbook",$conn,1,3);
$rs->addnew();
$rs->fields("name")=$n;
$rs->fields("content")=$c;
$rs->update();
$rs->close();
*/
echo"留言成功!<meta http-equiv=refresh content='1;url=index.php'>";
}
}
?>
以后可以用php+access来做东西了~~~~
 4#楼  
 
  回复人:tester
  注册时间:2004-11-26
  主题/回复:2/11
  积分:420
  等级:★★☆(五级)
  称号:略有小成

   
 4#楼 发表于2004-11-26 21:40:15  评分:× 

上面发言中
“用$conn的execute()方法同样执行成功。$conn->execute($sql);”
有误,我发现,虽然执行通过,但实际上并没有向数据库中插入记录。
 5#楼  
 
  回复人:一起PHP
  注册时间:2004-02-27
  主题/回复:247/1521
  积分:4649
  等级:★★★★★☆(十一级)
  称号:论坛圣人

   
 5#楼 发表于2004-11-26 22:00:57  评分: 

不错,不错!!!
 6#楼  
 
  回复人:tester
  注册时间:2004-11-26
  主题/回复:2/11
  积分:420
  等级:★★☆(五级)
  称号:略有小成

   
 6#楼 发表于2004-11-26 22:01:57  评分:× 

经过我的测试,$conn的execute()方法也能执行成功,向数据库中添加记录。

不过值得注意的是,必须加上$conn->close();这行代码,否则虽然运行通过,
但是并没有向数据库中插入记录。

因此send.php的具体代码为:
<?php include("conn.php") ?>
<?php
if($_POST['sub']<>"")
{
if($_POST['name']=="")
echo"大名不能为空!<a href=javascript:history.go(-1)>返回</a>";
elseif($_POST['content']=="")
echo"留言内容不能为空!<a href=javascript:history.go(-1)>返回</a>";
else
{
$n=$_POST['name'];
$c=$_POST['content'];
$sql="insert into gbook(name,content) values('$n','$c')";
/*$rs执行$sql的代码
$rs->open($sql,$conn,1,3);
*/
//$conn执行$sql的代码
$conn->Execute($sql);
//必须加下面这一行,否则虽然执行通过,但实际上并没向数据库中插入记录
$conn->close();
echo $_POST['name'];
/*$rs->open("select * from gbook",$conn,1,3);
$rs->addnew();
set $rs->fields("name")->value=$n;
set $rs->fields("content")->value=$c;
$rs->update();
$rs->close();*/
echo"留言成功!<meta http-equiv=refresh content='1;url=index.php'>";
}
}
?>
 7#楼  
 
  回复人:tester
  注册时间:2004-11-26
  主题/回复:2/11
  积分:420
  等级:★★☆(五级)
  称号:略有小成

   
 7#楼 发表于2004-11-26 22:10:01  评分:× 

不过我那个测试也表明php+access在IIS下的运行速度比较慢,不如asp。

另外我觉得站长这个论坛速度不怎么快啊,也不知道是网速的问题还是其他问题,我这边是接的电信adsl上网的。
 8#楼  
 
  回复人:一起PHP
  注册时间:2004-02-27
  主题/回复:247/1521
  积分:4649
  等级:★★★★★☆(十一级)
  称号:论坛圣人

   
 8#楼 发表于2004-11-27 15:55:08  评分: 

电信??
怎么想起来会用电信的。

PHP+ACCESs 比较慢我早就说过了。所以不推荐这么用。

我的论坛是HP服务器,网通机房托管。1000M网络出口。速度非常快。
 9#楼  
 
  回复人:tester
  注册时间:2004-11-26
  主题/回复:2/11
  积分:420
  等级:★★☆(五级)
  称号:略有小成

   
 9#楼 发表于2004-11-27 19:02:09  评分:× 

同事申请的电信adsl,等单位网通来上网等不急了,我也连到他那边去上网的。

但我这边访问你论坛速度不怎么快,也许是因为我机子慢吧,赛扬433的cpu说出来让你笑掉大牙了~~~呵呵!!!
 10#楼  
 
  回复人:filings
  注册时间:2004-11-30
  主题/回复:0/1
  积分:401
  等级:★★☆(五级)
  称号:略有小成

用户联系方式已设置为保密
 10#楼 发表于2004-11-30 08:19:59  评分:1 

各位大侠好!
   我是个新手初学PHP,按照tester的方法作了,代码是直接copy的 但为什么运行后IE里出现:
Fatal error: Uncaught exception 'com_exception' with message 'Source: Microsoft OLE DB Provider for ODBC Drivers
Description: 操作已被取消。' in C:\www\access\conn.php:4 Stack trace: #0 C:\www\access\index.php(1): include() #1 {main} thrown in C:\www\access\conn.php on line 4

环境为:php 5.0 +mysql
 11#楼  
 
  回复人:一起PHP
  注册时间:2004-02-27
  主题/回复:247/1521
  积分:4649
  等级:★★★★★☆(十一级)
  称号:论坛圣人

   
 11#楼 发表于2004-12-09 16:30:29  评分: 

瓦赛,呵呵,odbc驱动乱七八糟的错误。呵呵。搞不动。。
还是不要费太大精力研究这个了,这个只是试验性,没有很大的使用价值。。。
 12#楼  
 
  回复人:ziying
  注册时间:2004-11-09
  主题/回复:9/21
  积分:467
  等级:★★☆(五级)
  称号:略有小成

   
 12#楼 发表于2004-12-14 01:42:45  评分:1 

<a href=javascript:history.go(-1)>这句是什么意思呀
请教高手!
 13#楼  
 
  回复人:jokancn
  注册时间:2008-04-10
  主题/回复:0/2
  积分:24
  等级:★(二级)
  称号:初出茅庐

   
 13#楼 发表于2008-04-10 13:58:34  评分:1 

回复给楼主(tester)


经过测试一点都不会慢,你要先建一个ID键为主键索引。
然后查询的时候语句改为。
$rs->open("select * from gbook order by id desc",$conn,1,1);

不知道你们谁会ASP。
 14#楼  
 
  回复人:jokancn
  注册时间:2008-04-10
  主题/回复:0/2
  积分:24
  等级:★(二级)
  称号:初出茅庐

   
 14#楼 发表于2008-04-10 14:00:07  评分: 

回复给12#楼:ziying


不是高手,但是这句的意思是返回一部

例如。index.asp访问到111.asp,那你在111.asp运行了
<a href=javascript:history.go(-1)> 

那么你就回到index.asp了
  页数1/1首页 « 1 » 末页
  发表回复:您还没有登陆,无法发表回复。请先[登陆]

一起PHP技术联盟 主办:一起PHP 联系方式:站长QQ:4304410 QQ群:8423742 20159565 站长博客 E-mail: nqp@nqp.me 执行时间:0.021sec
SimsmaBBS 2008 (v6.0) Developed by 17php.com,Copyright(C)2003-2010 All rights reserved. 副本授权:一起PHP官方专用版