• Atitit php pdo的api使用 目录 1.1. PHP PDO简介 1 1.2. 若要使用数据库长连接,:PDO::ATTR_PERSISTENT 1 2. 其他设置 2 2.1. )、P


    Atitit php pdo的api使用

     

    目录

    1.1. PHP PDO简介 1

    1.2. 若要使用数据库长连接,:PDO::ATTR_PERSISTENT 1

    2. 其他设置 2

    2.1. )、PDO有三种错误处理方式:PDO::ERRMODE_EXCEPTION 2

    2.2. 返回的字段名称大小写处理PDO::ATTR_CASE 2

    2.3. 指定数据库返回的NULL值在PHP中对应的数值DO::ATTR_ORACLE_NULLS 2

    2.4. Tisye.php 2

    2.5. tisye mng list.php 查询 3

     

     

      1. PHP PDO简介

    PDO (PHP Data Object) 是 PHP5 的新特性,在 PHP6 中,PDO 将是默认的数据库处理方式,所以我们有必要学习一下 PDO。

    在 PHP5 以前的版本中,对于数据库的处理通常是通过一些扩展来支持的。如 windows 版本下的 php_mysql.dll、php_mssql.dll 这些扩展分别用于处理 mysql 和 MS SQL Server 等数据库。现在,POD 的出现,为我们提供了统一的数据库处理接口。

    PDO 是面向对象方式处理数据库连接操作的,其预定义了以下 3 个类:

    1. PDO:代表一个 PHP 和数据库之间的连接。
    2. PDOStatement:代表一条预处理语句以及语句执行后的联合结果集(associated result set)。
    3. PDOException:返回PDO触发的错误。

    常用的数据库操作方法如下:

    • PDO::query():主要是用于有记录结果返回的操作,如 SELECT 操作。
    • PDO::exec():主要是针对没有结果集合返回的操作,比如 INSERT、UPDATE、DELETE 等操作,它返回的结果是当前操作影响的列数。
    • PDO::prepare():主要是用于预处理操作,需要通过 PDOStatement::execute() 来执行预处理里面的 SQL 语句,这个方法可以绑定参数,功能强大,相对比较复杂。

     

     

      1. 若要使用数据库长连接,:PDO::ATTR_PERSISTENT 

    默认不是长连接,需要在最后加如下参数

    $dbh = new PDO("mysql:host=localhost;dbname=db_demo","root","password","array(PDO::ATTR_PERSISTENT => true)");  
    $dbh = null; //(释放)  

     

     

    1. 其他设置

     

     

      1. )、PDO有三种错误处理方式:PDO::ERRMODE_EXCEPTION
    • PDO::ERRMODE_SILENT不显示错误信息,只设置错误码
    • PDO::ERRMODE_WARNING显示警告错
    • PDO::ERRMODE_EXCEPTION抛出异常

    可通过以下语句来设置错误处理方式为抛出异常

    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    当设置为PDO::ERRMODE_SILENT时可以通过调用 errorCode() 或 errorInfo()来获得错误信息,当然其他情况下也可以。 

      1. 返回的字段名称大小写处理PDO::ATTR_CASE
    1. 、因为不同数据库对返回的字段名称大小写处理不同,所以PDO提供了PDO::ATTR_CASE设置项(包括PDO::CASE_LOWER,PDO::CASE_NATURAL,PDO::CASE_UPPER),来确定返回的字段名称的大小写。
      1. 指定数据库返回的NULL值在PHP中对应的数值DO::ATTR_ORACLE_NULLS

    3)、通过设置PDO::ATTR_ORACLE_NULLS类型(包括PDO::NULL_NATURAL,PDO::NULL_EmpTY_STRING,PDO::NULL_TO_STRING)来指定数据库返回的NULL值在PHP中对应的数值。

     

    1. 、PDO常用方法及其应用
    • PDO::query() 主要是用于有记录结果返回的操作,特别是SELECT操作
    • PDO::exec() 主要是针对没有结果集合返回的操作,如INSERT、UPDATE等操作
    • PDO::prepare() 主要是预处理操作,需要通过$rs->execute()来执行预处理里面的SQL语句,这个方法可以绑定参数,功能比较强大(防止sql注入就靠这个)
    • PDO::lastInsertId() 返回上次插入操作,主键列类型是自增的最后的自增ID
    • PDOStatement::fetch() 是用来获取一条记录
    • PDOStatement::fetchAll() 是获取所有记录集到一个集合
    • PDOStatement::fetchColumn() 是获取结果指定第一条记录的某个字段,缺省是第一个字段
    • PDOStatement::rowCount() :主要是用于PDO::query()和PDO::prepare()进行DELETE、INSERT、UPDATE操作影响的结果集,对PDO::exec()方法和SELECT操作无效

     

      1. Tisye.php

     

    <?php

    error_reporting(E_ALL^E_NOTICE);

    parse_str$_SERVER'QUERY_STRING' ],$parr);print_r($parr);

     

      $json_str=json_encode($parr);

    file_put_contents("C:\data\tisyi\".time(), $json_str);

     print ('ok');

    // echo "Hello world!<br>";

    $aa=333;

     

    $mysql_conf = array(

       );

    $pdo = new PDO("pgsql:host=" . $mysql_conf['host'] . ";port=5432;dbname=" . $mysql_conf['db'], $mysql_conf['db_user'], $mysql_conf['db_pwd']);//创建一个pdo对象

    $pdo->exec("set names 'utf8'");

    $sql = "select * from user where name = ?";

     

    //sprintf("%s love %s.", "a","b");

    // use exec() because no results are returned

    $sql = "INSERT INTO tisye提现表 (org开户机构, acc账户, name名字,amt金额)VALUES ('%s', '%s', '%s','%s') ";

    print_r($_GET);

    $sql=sprintf($sql,$_GET['org开户机构'],$_GET['acc'],$_GET['name'],$_GET['amt金额']);

    print_r($sql);

     print_r$pdo);

    //try{

      $pdo->exec($sql);

      echo "New record created successfully";

     

    // }

    // catch(PDOException $e)

    //     {

    //     echo $sql . "<br>" . $e->getMessage();

    //     }

     

    ?>

     

      1. tisye mng list.php 查询

     

    <?php

    //tisye mng list.php

    error_reporting(E_ALL^E_NOTICE);

    parse_str$_SERVER'QUERY_STRING' ],$parr);

    //print_r($parr);

     

    $mysql_conf = array(

       );

    $pdo = new PDO("pgsql:host=" . $mysql_conf['host'] . ";port=5432;dbname=" . $mysql_conf['db'], $mysql_conf['db_user'], $mysql_conf['db_pwd']);//创建一个pdo对象

    $pdo->exec("set names 'utf8'");

    $sql = "select * from tisye提现表 where 1=1";

     

    $sth = $pdo->query($sql);

    $rows = $sth->fetchAll();

     

    echo json_encode($rows);

     

    ?>

     

     

    如何使用PDO查询Mysql来避免SQL注入风险?ThinkPHP 3.1中的SQL注入漏洞分析! - 52php - 博客园.html

  • 相关阅读:
    阿狸的打字机(bzoj 2434)
    Censoring(bzoj 3940)
    文本生成器(bzoj 1030)
    病毒(bzoj 2938)
    Road(bzoj 2750)
    codevs 2370 小机房的树
    HDU 2838 Cow Sorting
    luogu P2253 好一个一中腰鼓!
    hdu 1166 敌兵布阵
    luogu P1901 发射站
  • 原文地址:https://www.cnblogs.com/attilax/p/15197002.html
Copyright © 2020-2023  润新知