zoukankan      html  css  js  c++  java
  • php pdo对象使用详解: 连接数据库与exec方法

    要使用pdo,首先需要开启pdo扩展,我这里已经开启了mysql的pdo扩展

    ghostwu@dev:~$ php -m | grep pdo
    pdo_mysql
    ghostwu@dev:~$ 

    1,连接数据库

    mysql> show create database shop G;
    *************************** 1. row ***************************
           Database: shop
    Create Database: CREATE DATABASE `shop` /*!40100 DEFAULT CHARACTER SET utf8 */
    1 row in set (0.00 sec)
    mysql> show create table account G;
    *************************** 1. row ***************************
           Table: account
    Create Table: CREATE TABLE `account` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `user_name` varchar(20) CHARACTER SET latin1 NOT NULL,
      `user_pwd` varchar(40) CHARACTER SET latin1 NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8
    try{
            $dsn = 'mysql:host=localhost;dbname=shop';
            $username = 'root';
            $pwd = 'root';
            $pdo = new PDO( $dsn, $username, $pwd );
            var_dump( $pdo );
        }catch( PDOException $e ) {
            echo $e->getMessage();
        }

    >上面为参数形式连接数据库

    >uri形式连接数据库

    dsn.txt

    mysql:host=localhost;dbname=shop;
    try{
            $dsn = 'uri:file:///home/ghostwu/php/php2/pdo/dsn.txt';
            $username = 'root';
            $pwd = 'root';
            $pdo = new PDO( $dsn, $username, $pwd );
            var_dump( $pdo );
        }catch( PDOException $e ) {
            echo $e->getMessage();
        }

    还有一种是php.ini中写dsn连接信息,不太推荐使用

    2,exec执行一条sql语句,返回值为受影响的行数,如果没有受影响的行数,返回值为0,该方法对select语句无效

    try{
            $dsn = 'mysql:host=localhost;dbname=shop';
            $username = 'root';
            $pwd = 'root';
            $pdo = new PDO( $dsn, $username, $pwd );
    
            $sql =<<< SQL
            create table if not exists user(
            id int unsigned not null auto_increment,
            username varchar( 20 ) not null unique,
            pwd char( 32 ) not null,
            email varchar( 30 ) not null,
            primary key( id )    
            )engine myisam;
    SQL;
            $res = $pdo->exec( $sql );
            var_dump( $res );
        }catch( PDOException $e ) {
            echo $e->getMessage();
        }

    3,执行insert语句

    $insertUserSql = "insert into user( username, pwd, email ) values( 'ghostwu'," . "'" . md5( 'ghostwu' )  . "'" . ",'ghostwu@test.com')";
            $res = $pdo->exec( $insertUserSql );
            var_dump( $res );

    4,一次性执行多条sql语句

     1 try{
     2         $dsn = 'mysql:host=localhost;dbname=shop';
     3         $username = 'root';
     4         $pwd = 'root';
     5         $pdo = new PDO( $dsn, $username, $pwd );
     6         $bajie = md5( 'bajie' );
     7         $wukong = md5( 'wukong' );
     8         $tangsheng = md5( 'tangsheng' );
     9         $insertUserSql =<<<EOF
    10         insert into user( username, pwd, email ) values( 'wukong', '$wukong', 'wukong@huaguoshan.com' ),( 'bajie', '$bajie','bajie@tianting.com' ),( 'tangsheng', '$tangsheng','tangsheng@datang.com' );
    11 EOF;
    12         $res = $pdo->exec( $insertUserSql );
    13         var_dump( $res );
    14     }catch( PDOException $e ) {
    15         echo $e->getMessage();
    16     }

    5,获取最后一次插入数据的自增id

        try{
            $dsn = 'mysql:host=localhost;dbname=shop';
            $username = 'root';
            $pwd = 'root';
            $pdo = new PDO( $dsn, $username, $pwd );
            $insertUserSql = "insert into user( username, pwd, email ) values( 'zhanzhao'," . "'" . md5('zhanzhao' ) . "','zhan@kaifeng.com')";
            echo $insertUserSql . PHP_EOL;
            $res = $pdo->exec( $insertUserSql );
            echo $pdo->lastInsertId() . PHP_EOL;
        }catch( PDOException $e ) {
            echo $e->getMessage();
        }

    6,执行delete语句

    try{
            $pdo = new PDO( "mysql:host=localhost;dbname=shop", 'root', 'root' );
            $sql = "delete from user where id = 1";
            $res = $pdo->exec( $sql );
            var_dump( $res );
        }catch( PDOException $e ) {
            echo $e->getMessage();
        }
  • 相关阅读:
    Ubuntu 17.10 联网、jdk配置、初始化
    记一次与为知笔记的客服沟通
    C++ Primer zh 5th 思维导图
    《程序员健康指南(The Healthy Programmer)》笔记
    Learn_OpenGL_002_你好,长方形
    Learn_OpenGL_001_环境配置
    Visual Studio Community 2017 配置 OpenGL 环境
    oracle删除数据库
    oracle修改审计功能
    dataguard日志自动删除
  • 原文地址:https://www.cnblogs.com/ghostwu/p/8976291.html
Copyright © 2011-2022 走看看