php pdo对象使用详解: 连接数据库与exec方法
2023-09-11 14:19:51 时间
要使用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(); }
相关文章
- RabbitMQ 入门教程(PHP版) 第四部分:路由(Routing)
- RabbitMQ 入门教程(PHP版) 第一部分:Hello World
- php stomp.dll 下载地址
- [PHP] ubuntu 16.04系统下解决MySQL 5.7版本的root用户重置密码问题
- 【转】PHP网站(nginx、php-fpm、mysql) 用户权限解析
- PHP 位运算(&, |, ^, ~, <<, >>)及 PHP错误级别报告设置(error_reporting) 详解
- CentOS6.3编译安装Memcached的PHP客户端memcache
- PHP Socket编程 之 php实现http服务
- PHP操作Redis数据库常用方法
- PHP与SQL数据库交互中文乱码怎么办
- php数据通信方式
- dns未设置 PHP Warning: file_get_contents():php_network_getaddresses: getaddrinfo failed:
- LZW算法PHP实现方法 lzw_decompress php
- PHP读取配置文件类(php,ini,yaml,xml)
- 利用PHP执行SQL文件,将SQL文件导入到数据库【转】
- php:在linux上用sudo提升权限(centos 8 / PHP 7.4.2)
- [转]PHP 设计模式
- PHP 数据库 ODBC
- PHP面试题:单例模式,创建mysqli数据库链接的单例对象
- PHP面试题:你常用到的mysql命令?
- php中数据库连接方式pdo和mysqli对比分析
- 【整理】Linux下中文检索引擎coreseek4安装,以及PHP使用sphinx的三种方式(sphinxapi,sphinx的php扩展,SphinxSe作为mysql存储引擎)