PDO的知识点标注在代码里

<?php
//造DSN:驱动名:dbname=数据库名;host=服务器地址
$dsn="mysql:dbname=mydb;host=localhost";
$pdo=new PDO($dsn,"root",""); //写sql语句
$sql="select * from info"; //1.execu()执行增删改语句 //2.query()执行查询语句
//例子
/*//执行sql语句
$v=$pdo->query($sql); foreach($v as $a)
{ //返回的对象比较特殊,可以直接用循环遍历,尽量不要用
echo $a[0];
}*/ //3.预处理语句——prepare()和execute语句
//预处理,先把sql语句放到服务器上等待我们给他指令去执行
$stm=$pdo->prepare($sql); //execute()执行准备好的sql语句,成功返回true,失败返回false
if($stm->execute())
{
//获取结果的方法
//注意:各个获取结果的方法括号内可以写参数
//1.取一条数据
//var_dump($stm->fetch()); //fetch()和fetchALL()的参数相同 //2.取所有
//var_dump($stm->fetchAll(PDO::FETCH_ASSOC));//返回关联数组
//var_dump($stm->fetchAll(PDO::FETCH_NOM));//返回索引数组
//var_dump($stm->fetchAll(PDO::FETCH_OBJ));//返回对象数组 //3.取某一列
//var_dump($stm->fetchColumn(1)); //以0开始索引 //4.返回一条对象
//var_dump($stm->fetchObject());
}
else
{
echo "连接失败";
}

  

以下代码为PDO参数绑定

<?php
//造对象
$dsn="mysql:dbname=mydb;host=localhost";
$pdo=new PDO($dsn,"root",""); //写sql语句 //$sql="insert into nation values (?,?)"; //语句1 $sql="insert into nation values (:aa,:bb)"; //语句2 //预处理
$stm=$pdo->prepare($sql); //给参数绑定值 //1.1:$sql语句里用?时,使用bindParam()添加
$stm->bindParam(1,$code); //数字1代表占位符,$code代表添加的列名
$stm->bindParam(2,$name);
$code="n009"; //修改此两处的值实现反复添加
$name="犹太族"; //1.2:$sql语句里用?时,使用索引数组添加
$attr=array("n010","藏族"); //这种方法要把第一个参数写成索引形势,并且要把$attr放到execute($attr)内 //2.1:$sql语句里用:aa时,使用bindParam()添加
$stm->bindParam("aa",$code,PDO::PARAM_STR);
$stm->bindParam("bb",$name,PDO::PARAM_STR);
$code="n011";
$name="巨人族"; //2.2:$sql语句里用?时,使用关联数组
$attr=array("aa"=>"n012","bb"=>"小人族"); //执行
if($stm->execute($attr))
{
echo "执行成功";
}
else
{
echo "执行失败";
}

  

练习:PDO添加表单

前端页面

<body>
<h1>添加民族代号和名称</h1>
<br />
<form action="PDOtjchuli.php" method="post">
民族代号:<input type="text" name="one"/><br />
民族名称:<input type="text" name="two"/><br />
<input type="submit" value="提交"/>
</form>
</body>
</html>

  

后台处理代码

<?php
$dsn="mysql:dbname=mydb;host=localhost";
$pdo=new PDO($dsn,"root","");
$sql="insert into nation values (:aa,:bb)";
$result=$pdo->prepare($sql); $attr=array("aa"=>$_POST["one"],"bb"=>$_POST["two"]); if($result->execute($attr))
{
echo "<script>alert('添加成功')</script>";
}
else
{
echo "<script>alert('添加成功')</script>";
}

  

PDO讲解的更多相关文章

  1. 理解数据库的PDO处理的理念

    做第一份工作的时候,脑海里没有数据安全性的概念,从来没有网站被黑客盯上的事情.网站用户量也不大,虽然工作繁忙,但是只要代码上了线,基本上没有出过问题.在这个期间曾经做过一些傻的事情,认为sql写的越复 ...

  2. 系统的讲解 - PHP WEB 安全防御

    目录 常见漏洞 SQL注入攻击 XSS攻击 SSRF攻击 CSRF攻击 文件上传漏洞 信息泄露 越权 设计缺陷 小结 常见漏洞 看到上图的漏洞是不是特别熟悉,如果不进行及时防御,就会产生蝴蝶效应. 往 ...

  3. PHP(Mysqli和PDO)预处理

    PHP预处理主要是用来防SQL注入的,开发程序的都明白这样一个道理,不能相信用户的任何输入,如果用户输入问题你没有做相应的安全, 那么:你的程序是很危险的,很容易被攻击的!预处理:只分析两个:mysq ...

  4. php通过Mysqli和PDO连接mysql数据详解

    前言 在实际开发中,关于数据库操作类,很少是自己去写,大多是通过一些框架去实现,突然自己去写,还是需要借阅手册之类,于是我觉得有必要去总结一下,php连接mysql的方法,php连接mysql,可以通 ...

  5. 跟着百度学PHP[14]-PDO之Mysql的事务处理2

    前面所将仅仅是在纯mysql下的讲解,这节就是要将其搬到PDO台面上来了. 将自动提交关闭. SetAttribute下有一个PDO::ATTR_AUTOCOMMIT 将其设置为0即可关闭,如:$pd ...

  6. PDO、PDOStatement、PDOException

    最近在学PDO  比较详细的资料 出处:http://blog.csdn.net/hsst027/article/details/23682003 PDO中包含三个预定义的类,它们分别是PDO.PDO ...

  7. PDO如何完成事务操作

    起因 无意间翻看极客学院的APP,准备找一些教程看看.看到一篇PDO 安全处理与事务处理,一想对MySQL的事务处理仅仅停留在概念上(知道执行多条语句,其中一个失败了,就会回滚操作).但是把概念变成代 ...

  8. PHP中的PDO操作学习(四)查询结构集

    关于 PDO 的最后一篇文章,我们就以查询结果集的操作为结束.在数据库的操作中,查询往往占的比例非常高.在日常的开发中,大部分的业务都是读多写少型的业务,所以掌握好查询相关的操作是我们学习的重要内容. ...

  9. PHP中的PDO操作学习(三)预处理类及绑定数据

    要说 PDO 中最强大的功能,除了为不同的数据库提供了统一的接口之外,更重要的就是它的预处理能力,也就是 PDOStatement 所提供的功能.因为它的存在,才让我们可以安心地去使用而不用操心 SQ ...

随机推荐

  1. 强调语气<strong>和<em>标签,文字设置单独样式<span>

    区别:1,<em> 表示强调,<strong> 表示更强烈的强调. 2,并且在浏览器中<em> 默认用斜体表示,<strong> 用粗体表示. 3,两个 ...

  2. 经常在eclipse中导入web项目时,出现转不了项目类型的问题,导入后就是一个java项目。

    1.在eclipse的项目上点右键,刷新项目.2.在项目上点右键,进入属性(properties)3.在左侧列表项目中点击选择“Project Facets”,在右侧选择“Dynamic Web Mo ...

  3. 图解SSL/TLS协议

    本周,CloudFlare宣布,开始提供Keyless服务,即你把网站放到它们的CDN上,不用提供自己的私钥,也能使用SSL加密链接. 我看了CloudFlare的说明(这里和这里),突然意识到这是绝 ...

  4. [LeetCode]题解(python):103 Binary Tree Zigzag Level Order Traversal

    题目来源 https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/ Given a binary tree, re ...

  5. JMeter学习-005-JMeter 主要组件概要介绍及执行顺序

    本文将对 JMeter 主要组件(主要涉及 Threads(Users).Test Fragment.逻辑控制器.配置元件.定时器.前置处理器.Sampler.后置处理器.断言.监听器 十大组件)进行 ...

  6. linux bq20z75 驱动

    新的项目中使用到了电池.电池的guage使用TI的bq20z75.kernel的驱动中已经有bq20z75的驱动,只要稍加修改就可以使用. 参考链接 http://www.ti.com/lit/er/ ...

  7. imx6 MFG TOOL 分析

    之前分析过mfgtool的内容,最近从官网下载,返现新版的mfgtool工具将imx6各种版本的linux/android都使用一个工具进行烧录.所以从新分析一下. 新版与旧版的一个区别是烧写使用的u ...

  8. oracle 条件语句的写法

    1.基本的if else DECLARE I ; BEGIN THEN DBMS_OUTPUT.PUT_LINE('TRUE'); ELSE DBMS_OUTPUT.PUT_LINE('FALSE') ...

  9. 使用TortoiseGit将代码上传到bitbucket

    首先需要有一个bitbucket的账户,这是无疑问的. 比如我本地有一个项目,项目名是 我想把这个项目托管到bitbucket上! 1.首先在bitbucket上创建一个仓库,注意仓库的名字要和项目的 ...

  10. Exception not a valid month

    oracle中的to_date('date','pattern') 其中的date和pattern格式应该要一样 SELECT to_date('2016-03-29 00:00:00','yyyy- ...