php pdo方法连接及操作数据库

直接上代码,后面解释.

//连接
$pdo = new PDO("mysql:host=数据库地址;dbname=数据库名称","数据库账号","数据库密码");

//查询query()里写相应的查询语句,比如:select * from user where username='$na'
$cx = $pdo->query("查询语句");
/*
查询语句应含在""内,其实质是一个字符串,所以可以先编好查询语句,再将变量至于query()里,如:
$sql="select * from user where username='aaa'";
$cx = $pdo->query($sql);
等价于
$cx = $pdo->query("select * from user where username='aaa'");
*/

//分解查询到的数据为数组,之后对数据的调用形式为$a["username"],其值为aaa
$a = $cx->fetch();

//带参数插入
        $stmt = $mysqli->prepare("insert into `user`(`username`,`password`,`email`,`date`) values(:U,:P,:E,:D)");
        $stmt->bindParam(':U',$_POST["un"]);
        $stmt->bindParam(':P',$_POST["pw1"]);
        $stmt->bindParam(':E',$_POST["email"]);
        $stmt->bindParam(':D',date("Y-m-d H:i:s"));

if($stmt->execute())
{}
else
{}

//带参数修改
$sql="update  `user` set `date`=:D,`orderid`=:O where `username`=:U";

$stmt = $mysqli->prepare($sql);

$stmt->bindParam(':D',date_format($date,"Y-m-d  H:i:s"));
$stmt->bindParam(':O',$_GET["out_trade_no"]);
$stmt->bindParam(':U',$_COOKIE["un"]);

if($stmt->execute())
{}
else
{}

//断开
$pdo=null;

1、在执行过$cx = $pdo->query($sql);以后,如果不再操作数据库,而只是使用查询出的结果,则可以马上执行$pdo=null;以释放$pdo,也就是说,$a = $cx->fetch();可以在$pdo=null;之后执行.
2、在不使用$pdo时,一定要释放,这是一个良好的编程习惯,不释放有什么后果?我不知道.
3、插入与更改都是带参数的,但形式有所不同.这是怎么回事?我只能把我的经历分享给大家.这两段语句在我的网页里都能成功执行,我先写的插入,又过了很长时间,才写的更改,当我写更改时,试图用插入的格式写,但是总是不对.后来改了形式,就通过了.$sql="updateusersetdate=:D,orderid=:O whereusername=:U";里的sql语句是我从我的数据库里复制的,再稍加改动,加入参数,就成了.我的经验是:最稳妥的办法就是从你的数据库里复制SQL语句并加以修改.因为我在网上查资料的时候,发现很多不同形式的sql语句,我就很迷惑,到底哪种适合我的数据库,其实答案很简单,就是你去操作你的数据库,数据库会对你相应的操作给出sql语句,用这个语句肯定是最稳妥的.

下面我附上操作数据库,得到sql语句的过程.我使用的是阿里云.登录数据库后如图1
这里写图片描述

在进行一些修改后,点击图1的“提交修改”.会出现如下对话框,图2
这里写图片描述
将这里的语句复制到原代码即可,再进行相应改动,即可实现带参数操作数据库.

下面是我原文章的内容,有点乱,但更全.

4、php+mysql的PDO用法
一开始我就用phpstudy里介绍的方法,虽然结果没问题,但是网页会告诉你“这过时了,建议用mysqli或PDO来连接”。这是什么意思,直接百度。mysqli是mysql+intelligent(智能)的意思,复制代码以后,正常使用。有看PDO,发现这是一种更通用的数据库连接方式,于是决定所有的数据库操作都用PDO实现,下面贴出代码及注释。

<?php
$mysqli = new PDO("mysql:host=zzzzzzzz;dbname=xxxxxxxx","cccccccc","password");
/*建立一个名为$mysqli的数据库连接对象(这里我用$mysqli作为变量名,与mysqli的方法无关,只是我懒,就是个名字,无所谓,也不会出现第二个数据库链接对象,不会混淆)
参数有三个:    1"mysql:host=zzzzzzzz;dbname=xxxxxxxx"(指明了数据库类型、地址、数据库名)
                            (PDO方法的好处是,即使你更换了数据库类型,比如sqlserver,仍然可以用这个方法,只需要改上面的参数所
                                以说他是通用的数据库连接方式)
                         2"cccccccc"(用户名)
                         3"password"(密码)
三个参数都正确才能建立正确的数据库连接对象 
 */

$cx = $mysqli->query("select * from notice");
/*从一个名为notice的表格中查询全部对象,结果赋值给$cx$mysqli执行query(查询)("select * from notice")(查询语句指明查询的具体内容)
*/

foreach($cx as $b){        
//将每行数据赋值给一个数组。实际上$cx是个二维数组,通过一个foreach循环将二维数组分解成一维数组,再进行操作。

echo '<font size="50">[<a href="notice_content.php?id='.$b["id"].'">'.$b["noticename"].'</a>]&nbsp&nbsp&nbsp['.$b["year"].'-'.$b["month"].'-'.$b["day"].']<br /></font>';
 /*echo就是服务器向浏览器输出html代码的语句,一对单引号中的内容是不变的,变量不要用单引号括起来,每一对单引号及变量之间用.连接。
虽然我要输出的是一个二维数组,但我并没有用表格。因为浏览器渲染表格更费劲,不如空格、换行省劲。而且,表格的标签多很多,所以我在追求速度的情况下就没用表格,但是如果追求美观的话,就需要用表格,一句话,以需求为导向。
*/ 

}
$mysqli=null;
/*数据库用过了,别忘了删掉连接对象。其实这个连接对象可以更早的删除,可以早到$cx= $mysqli->query("select * from notice");之后。因为那之后$mysqli就没有再用过,也就是查询结果已经出来了(存进了$cx),也不需要再查询了,就可以删掉连接对象了。这样解释希望有助于读者更深的理解PDO连接数据库的原理。
*/ 

?>

==========================================================

5、数据库插入操作
下面是一段往表格插入行的命令,这是带参

$stmt = $mysqli->prepare("insert `road`(`id`,`roadname`,`intro`) values(:ID,:RN,:IN)");
//    插入的工作要先做准备,这里要格外注意的是,SQL语句里的引号,不是引号‘,是1左边的按键`,不知道是阿里云服务器的事,还是MySQL就这么规定的,所以我前面说最好直接在服务器上$id=uniqid();
$rn=$_POST["rn"];
$in=$_POST["in"];
//    id取随机数,rn取路名,in取介绍内容 

$stmt->bindParam(':ID',$id);
$stmt->bindParam(':RN',$rn);
$stmt->bindParam(':IN',$in);
//    就理解为为参数赋值吧

if ($stmt->execute())
//执行数据库操作

{
//如果成功

echo '<META HTTP-EQUIV="REFRESH" content="0;URL=road_select.php">';
//跳转页面

$mysqli=null;
//删除连接
}
else
{
//如果不成功 

echo '<font size="50">数据库中已有此记录,请<a href="road_input.php">继续</a></font>';
//说明数据库里有这条记录,继续下一个输入。

}

直接执行某句非查询不带可变参数的sql语句,可用$stmt->exec(“。。。。。。”)数据库其他操作

<?php  
$dbh = new PDO('mysql:host=localhost;dbname=access_control', 'root', '');    
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);    
$dbh->exec('set names utf8');   
/*添加*/  
//$sql = "INSERT INTO `user` SET `login`=:login AND `password`=:password";   
$sql = "INSERT INTO `user` (`login` ,`password`)VALUES (:login, :password)";  $stmt = $dbh->prepare($sql);  $stmt->execute(array(':login'=>'kevin2',':password'=>''));    
echo $dbh->lastinsertid();    
/*修改*/  
$sql = "UPDATE `user` SET `password`=:password WHERE `user_id`=:userId";    
$stmt = $dbh->prepare($sql);    
$stmt->execute(array(':userId'=>'7', ':password'=>'4607e782c4d86fd5364d7e4508bb10d9'));    
echo $stmt->rowCount();   
/*删除*/  
$sql = "DELETE FROM `user` WHERE `login` LIKE 'kevin_'"; //kevin%    
$stmt = $dbh->prepare($sql);    
$stmt->execute();    
echo $stmt->rowCount();    
/*查询*/  
$login = 'kevin%';    
$sql = "SELECT * FROM `user` WHERE `login` LIKE :login";    
$stmt = $dbh->prepare($sql);    
$stmt->execute(array(':login'=>$login));    
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){       
 print_r($row);    
}    
print_r( $stmt->fetchAll(PDO::FETCH_ASSOC));   
?>  
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值