PDO预编译语句执行查询与DML操作

代码示例:

MyPDO.class.php的代码如下:

/** * 使用PDO预编译语句执行DML操作并返回受影响的行数 * @param $sql           需要执行的SQL语句(预编译语句写法) * @param array $arr     预编译语句需要添加的数据值,数组结构 * @return int           返回DML执行后受影响的行数 */public function intByPdoPrepare($sql, array $arr=array()){    $ps =$this->pdo->prepare($sql);    $ps->execute($arr);    return $ps->rowCount();}

/** * 使用PDO预编译语句执行查询操作并返回结果集合 * @param $sql           需要执行的SQL语句(预编译语句写法) * @param array $arr     预编译语句需要添加的数据值,数组结构 * @return array         转换为数组结构的返回值结果 */public function arrayByPdoPrepare($sql, array $arr=array()){    $ps =$this->pdo->prepare($sql);    $ps->execute($arr);    if($ps)        return $ps->fetchAll();    return array();}

updateStuInfo.php代码如下:示例的为修改通讯录好友信息:
$mp = new MyPDO();$sql = "update contact set cname=?,csex=?,cmobile=?,cqq=?,cemail=?,clastmodifytime = ? where cid = ?";$users = $mp->intByPdoPrepare($sql,array($_POST[‘cname‘],$_POST[‘csex‘],$_POST[‘cmobile‘],$_POST[‘cqq‘],$_POST[‘cemail‘],$time,$_POST[‘cid‘]));
 
时间: 2024-10-11 03:42:26

PDO预编译语句执行查询与DML操作的相关文章

关于mysql使用prepare关键字预编译语句后是否使用deallocate的区别

下图是mysql数据库中某一数据库,里面有一张user表. 1.新建查询之后,下图展示的使用prepare预编译查询结果(注意:使用了DEALLOCATE关键字删除预编译语句) 2.再次运行刚才的预编译语句aa, 结果出现错误.原因是:之前使用deallocate已经删除了预编译语句. 3.这一次不使用deallocate关键字删除预编译语句. 再一次调用已经预编译过的aa语句. 这一次仍然可以使用该语句. 4.使用deallocate删除该语句. 再次运行已删除语句. 结果再次报错.说明dea

SQL或HQL预编译语句,能够防止SQL注入,但是不能处理%和_特殊字符

最近项目在做整改,将所有DAO层的直接拼接SQL字符串的代码,转换成使用预编译语句的方式.个人通过写dao层的单元测试,有以下几点收获. dao层代码如下 //使用了预编译sql public List<IndvConfigModel> selectConfigBySuffix(String suffix) { String hql = "from IndvConfigModel where configKey like '%'||?||'%'"; return this.

JDBC预编译语句表名占位异常

有时候,我们有这样的需求,需要清空多个表的内容,这样我们有两种做法,可用delete from table 或 truncate table table,两种方法视情况而定,前者只是一条条的删除表数据,主键自增的序列还能保存,后者类似是重新建表保留表结构,主键信息,也被清空. OK,下面我们用JDBC开始删除,因为是多个表,所以要循环删除,根据以往的经验,使用预编译的sql语句,可能执行效率会更高,短短几行代码,搞定: public void clearTables()throws Except

JDBC 预编译语句对象

Statement的安全问题:Statement的执行其实是直接拼接SQL语句,看成一个整体,然后再一起执行的. String sql = "xxx"; // ? 预先对SQL语句进行语法的校验 PreparedStatement ps = conn.prepareStatement(sql); // ? 对应的索引从1开始 ps.setString(1, username); ps.setString(2, password); rs = ps.executeQuery(); 还可以

PHP的预编译的使用

在PHP中,使用预编译不仅可以简化代码,还可以防止有些数据的泄露 <?php /** * 我直接针对PDO的封装类 * User: seven * Date: 2017/7/26 * Time: 9:43 */ class MyPDO { /** 访问数据库的PDO对象 */ protected $pdo; /** * 当前类的构造函数 * 读取数据库配置信息文件,并初始化PDO对象 */ function __construct() { if(file_exists('db.ini')){ $

面试题--如何防止sql注入,使用PreparedStatement的预编译,传入的内容就不会和原来的语句发生任何匹配的关系,达到防止注入的方法

PreparedStatement的用法 jdbc(java database connectivity,java数据库连接)的api中的主要的四个类之一的java.sql.statement要求开发者付出大量的时间和精力.在使用statement获取jdbc访问时所具有的一个共通的问题是输入适当格式的日期和时间戳:2002-02-05 20:56 或者 02/05/02 8:56 pm. 通过使用java.sql.preparedstatement,这个问题可以自动解决.一个prepareds

PHP mysqli 扩展库(面向对象/数据库操作封装/事务控制/预编译)

1.和mysql扩展库的区别: (1   安全性.稳定性更高 (2  提供了面向对象和面向过程两种风格 2.php.ini  中的  extension=php_mysqli.dll 解除封印 3.面向对象:查询列表 1 <?php 2 3 //mysqli 操作数据(面向对象风格) 4 5 #1.创建Mysql对象 6 7 $mysqli=new MySQLi("127.0.0.1","root","daomul","test&

atitit.查看预编译sql问号 本质and原理and查看原生sql语句

atitit.查看预编译sql问号 本质and原理and查看原生sql语句 1. 预编译原理. 1 2. preparedStatement 有三大优点: 1 3. How to look  gene  sql 2 1. Hb cfg all debug ,cant see... 2 2. WSExplorer按照进程抓取pack可以看见.. 2 3. Mysql 5.6 开放日志可以看见 2 4. Mysql and msssql的不同实现 2 4. MYSql的实现是jdbc连接完全的sql

JDBC 删除数据两种方式,PreparedStatement表示预编译的 SQL 语句的对象,防止sql注入

1.statement使用的不方便 2.sql注入的问题 *  在SQL语句中使用了系统自带的关键字 or and ,让where条件判断失效 *   prepareStatement: *  1.sql语句不用在拼字符串 *  2.防止sql注入问题 1 public class CURDTest { 2 public static void main(String[] args) throws Exception { 3 //insertTest(); 4 //deleteTest(); 5