PDO 对 mysql的基本操作

PDO扩展操作
<?php

$dsn = ‘mysql:dbname=yii2;host=localhost‘;
$user = ‘root‘;
$password = ‘123456‘;
try
{
    $dbh = new PDO($dsn,$user,$password,array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}catch(PDOException $e)
{
    echo ‘Connection failed: ‘ . $e->getMessage();
}

//事务使用 - beginTransaction(),commit(),rollBack(),exec()
/* // 增加了 new PDO() 中的最后参数
try
{
    $dbh->beginTransaction();
    $sqlDel = "delete from country where code = ‘PK‘";
    $sqlIn = "insert into country(code,name,pop) values(‘TT‘,‘TEST‘, 9999)";
    $dbh->exec($sqlDel);
    $dbh->exec($sqlIn);
    $dbh->commit();
}catch(PDOException $e)
{
    echo "<br />error:<br />";
    echo "<pre>";
    print_r($e->getMessage());
    $dbh->rollBack();
}
*/

// 事务使用 - setAttribute(),beginTransaction(),commit(),rollBack()
/*
// 设置错误模式,一定要设置,不然不会回滚与抛出异常,也可以在 new PDO()最后一个参数加这个值
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
try{
    $dbh->beginTransaction();
     $sqlDel = "delete from country where code = ‘GX‘";
     $sqlIn = "insert into country(code,name,population) values(‘PK‘,‘good‘,‘4444444‘)";
     $delFlag = $dbh->exec($sqlDel);
     $inFlag = $dbh->exec($sqlIn);
     var_dump($delFlag);
     var_dump($inFlag);
     echo ‘ commit ‘;
    var_dump($dbh->inTransaction()); // true
    $dbh->commit();
    var_dump($dbh->lastInsertId());
    echo ‘ commit222222 ‘;
}catch(PDOException $e)
{
    echo ‘ rollBack ‘;
    $dbh->rollBack();
    echo $e->getMessage();
}
$dbh->setAttribute(PDO::ATTR_AUTOCOMMIT,1);
*/
// 删除 - exec()
/*
$sql = "delete from country where code = ‘FK‘";
$count = $dbh->exec($sql);
var_dump($count); // int(1)   int(0)
*/
//新增 - exec()
/*
$sql = "insert into country(code,name,population) values(‘FK‘,‘yes‘,13000)";
$count = $dbh->exec($sql);
var_dump($count); // int(1)
*/

// 查询 - query()
/*
$sql = "select * from country where code =‘AU‘";
$res = $dbh->query($sql, PDO::FETCH_ASSOC);
foreach($res as $row)
{
    echo "<pre>";
    print_r($row);
}
Array
(
    [code] => AU
    [name] => Australia
    [population] => 18886000
)
*/
// 查询 - fetchAll()
/*
$sql = "select * from country where code = :code";
$sth = $dbh->prepare($sql);
$sth->execute(array(":code"=>"AU"));
$res = $sth->fetchAll(PDO::FETCH_ASSOC);
// 也可以用在 $dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC),设置只关联数组
print_r($res);
*/
/*
Array
(
    [0] => Array
        (
            [code] => AU
            [0] => AU
            [name] => Australia
            [1] => Australia
            [population] => 18886000
            [2] => 18886000
        )

)
Array
(
    [0] => Array
        (
            [code] => AU
            [name] => Australia
            [population] => 18886000
        )

)
*/
// PDOStatement 操作
<?php // http://php.net/manual/zh/pdostatement.execute.php
$dsn = ‘mysql:host=localhost;dbname=yii2‘;
$username = ‘root‘;
$password = ‘123456‘;
try
{
    $dbh = new PDO($dsn,$username,$password);
}catch(PDOException $e)
{
    echo "failure : ";
    echo $e->getMessage();
    exit();
}
echo "<pre>";

/* 打印一条SQL预处理命令 - debugDumpParams
$name = ‘GD‘;
$sql = "select * from country where name = :name";
$res = $dbh->prepare($sql);
$res->bindValue(":name", $name);
$res->execute();
$res->debugDumpParams();
$rr = $res->fetchAll(PDO::FETCH_ASSOC);
print_r($rr);
SQL: [40] select * from country where name = :name
Params:  1
Key: Name: [5] :name
paramno=-1
name=[5] ":name"
is_param=1
param_type=2
*/

/* 获取记录的列数 columnCount()
$sql = "select * from country";
$res = $dbh->prepare($sql);
$res->execute();
$rr = $res->columnCount();
print_r($rr); // 3

*/
/* 返回受影响的行数 - rowCount(), prepare(),bindValue(),execute(),
$code = ‘PK‘;
$sql = "update country set name = ‘GD‘ where code = :code";
$res = $dbh->prepare($sql);
$res->bindValue(":code", $code);
$res->execute();
$affectCount = $res->rowCount();
print_r($affectCount); // 1
*/
/* 查询 - prepare(),bindValue(),fetchAll(),execute()
$name = ‘good‘;
$sql = "select count(1) as total from country where name = :name";
$res = $dbh->prepare($sql);
$res->bindValue(":name",$name);
$res->execute();
$rr = $res->fetchAll(PDO::FETCH_ASSOC);
print_r($rr);
Array
(
    [0] => Array
        (
            [total] => 2
        )

)
*/

/* 查询 - bindValue(),execute(),fetchAll()
$name = ‘good‘;
$code = ‘FK‘;
$sql = "select * from country where name = ? and code = ? limit 1";
$res = $dbh->prepare($sql);
$res->bindValue(1,$name);
$res->bindValue(2,$code);
$res->execute();
$rr = $res->fetchAll(PDO::FETCH_ASSOC);
print_r($rr);
Array
(
    [0] => Array
        (
            [code] => FK
            [name] => good
            [population] => 4444444
        )

)
*/
/* 查询 - prepare(),bindValue(),execute(),fetchAll()
$name = "good";
$code = ‘FK‘;
$sql = "select * from country where name = :name and code = :code limit 1";
$res = $dbh->prepare($sql);
$res->bindValue(":code", $code);
$res->bindValue(":name", $name);
$res->execute();
$rr = $res->fetchAll();
print_r($rr);
Array
(
    [0] => Array
        (
            [code] => FK
            [0] => FK
            [name] => good
            [1] => good
            [population] => 4444444
            [2] => 4444444
        )

)
*/
/* 查询 - prepare(),bindParam(),execute(),fetchAll()
$name = ‘good‘;
$code = ‘PK‘;
$sql = "select * from country where name = ? and code = ?";
$res = $dbh->prepare($sql);
$res->bindParam(1, $name);
$res->bindParam(2, $code);
$res->execute();
$rr = $res->fetchAll(PDO::FETCH_ASSOC);
print_r($rr);
Array
(
    [0] => Array
        (
            [code] => PK
            [name] => good
            [population] => 4444444
        )

)
*/
// 查询 - prepare(),bindParam(),execute(),fetchAll()
/*
$name = ‘good‘;
$code = ‘PK‘;
$population = 4444444;
$sql = "select * from country where name = :name and code = :code and population = :population";
$res = $dbh->prepare($sql);
$res->bindParam(":code", $code);
$res->bindParam(":name", $name,PDO::PARAM_STR);
$res->bindParam(":population", $population);
$res->execute();
$rr = $res->fetchAll(PDO::FETCH_ASSOC);
print_r($rr);
Array
(
    [0] => Array
        (
            [code] => PK
            [name] => good
            [population] => 4444444
        )

)
*/

// 查询 - prepare(),execute(),fetch()
/*
$sql = "select * from country limit 2";
$res = $dbh->prepare($sql);
$res->execute();
while($rs = $res->fetch(PDO::FETCH_ASSOC))
{
    print_r($rs);
}
Array
(
    [code] => AU
    [name] => Australia
    [population] => 18886000
)
Array
(
    [code] => BR
    [name] => Brazil
    [population] => 170115000
)
*/
// 查询 - prepare(),execute(),fetchAll()
/*
$sql = "select * from country limit 1";
$res = $dbh->prepare($sql);
$res->execute();
$rr = $res->fetchAll();
print_r($rr);
Array
(
    [0] => Array
        (
            [code] => AU
            [0] => AU
            [name] => Australia
            [1] => Australia
            [population] => 18886000
            [2] => 18886000
        )

)
*/
// 查询 - prepare(),execute(),fetchAll()
/**
$sql = "select * from country limit 1";
$sth = $dbh->prepare($sql);
$sth->execute();
$res = $sth->fetchAll(PDO::FETCH_ASSOC);
echo "<pre>";
print_r($res);
Array
(
    [0] => Array
        (
            [code] => AU
            [name] => Australia
            [population] => 18886000
        )

)
*/
时间: 2024-10-13 13:22:26

PDO 对 mysql的基本操作的相关文章

如何使用PDO查询Mysql来避免SQL注入风险?ThinkPHP 3.1中的SQL注入漏洞分析!

当我们使用传统的 mysql_connect .mysql_query方法来连接查询数据库时,如果过滤不严,就有SQL注入风险,导致网站被攻击,失去控制.虽然可以用mysql_real_escape_string()函数过滤用户提交的值,但是也有缺陷.而使用PHP的PDO扩展的 prepare 方法,就可以避免 sql injection 风险. PDO(PHP Data Object) 是PHP5新加入的一个重大功能,因为在PHP 5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的

PDO 查询mysql返回字段整型变为String型解决方法

PDO 查询mysql返回字段整型变为String型解决方法 使用PDO查询mysql数据库时.运行prepare,execute后,返回的字段数据全都变为字符型. 比如id在数据库中是Int的.查询后返回是String型. 对于php这样的弱类型的语言.影响不大. 在做API返回数据时.假设类型与数据库不一致,对于java和Objective C这些强类型,影响就非常大了. 解决方法: <?php $pdo = new PDO($dsn, $user, $pass, $param); // 在

PDO连接mysql和pgsql数据库

PDO连接mysql数据库 1 <?php 2 $dsn="mysql:host=localhsot;dbname=lamp87"; 3 $user="root"; 4 $passwd="123"; 5 $m = new PDO($dsn,$user,$passwd); 6 $stmt = $m->query("select * from stu"); 7 $rows = $stmt->fetchAll();

php类模块引擎PDO操作MySQL数据库简单阐述

PDO是什么呢? 通俗说就是别人写的一个“数据库操作工具类”,它非常强大,可以应对市面上几乎所有主流数据库, 具体应用时候有这样一个关系: 即,要操作某种数据,就得去“打开”对应的pdo引擎. 在php.ini的配置文件中,无非就是一个“模块”而已,我们只需要把分号删掉就表示开启!如下: 改为: 使用pdo连接mysql数据库 $dsn = "mysql:host=服务器地址/名称:port=端口号:dbname=数据库名"; $opt = array(PDO::MYSQL_ATTR_

1Python全栈之路系列之MySQL数据库基本操作

Python全栈之路系列之MySQL数据库基本操作 MySQL数据库介绍 MySQL是一种快速易用的关系型数据库管理系统(RDBMS),很多企业都在使用它来构建自己的数据库. MySQL由一家瑞典公司MySQL AB开发.运营并予以支持.它之所以非常流行,原因在于具备以下这些优点: 基于开源许可发布,无需付费即可使用. 自身的功能非常强大,足以匹敌绝大多数功能强大但却价格昂贵的数据库软件. 使用业内所熟悉的标准SQL数据库语言. 可运行于多个操作系统,支持多种语言,包括 PHP.PERL.C.C

PHP PDO操作MYSQL

PHP PDO操作MYSQL 学习要点: 1.        PHP PDO配置 2.        连接mysql及异常处理 3.        query,exec用法详解 4.        预处理prepare()用法详解 5.        PDO错误处理模式和事务处理 6.        获取和遍历结果集 7.        常用函数说明   我的博客:http://www.unitbuy.com PDO配置 PHP 数据对象 (PDO) 扩展可以支持绝大多数的主流的数据库,如下 C

PDO操作MYSQL基础教程分享

PHP中的PDO扩展为PHP访问数据库定义了一个轻量级的.一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据. PDO支持的PHP版本为PHP5.1以及更高的版本,而且在PHP5.2下PDO默认为开启状态, 下面是在php.ini中PDO的配置: extension=php_pdo.dll 为了启用对某个数据库的支持,需要在php配置文件中将相应的扩展打开,例如要支持MySQL,需要开启下面的扩展 extension=php_pdo_mys

基于linux操作系统Mysql的基本操作(三)

基于linux操作系统Mysql的基本操作(三) 知识点一:查看MYSQL数据库中所有用户 命令: select distinct concat ('User:''',user,'''@''',host,''';')as query from mysql.user; 注:(1)关键词 DISTINCT 用于返回唯一不同的值. 语法:SELECT DISTINCT 列名称 FROM 表名称 (2)SQL CONCAT函数用于将两个字符串连接起来,形成一个单一的字符串. 比较两者的用法: 知识点二:

使用PDO操作MySQL

PDO扩展为PHP访问数据库定义了一个轻量级的.一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据. PDO支持的PHP版本为PHP5.1以及更高的版本,而且在PHP5.2下PDO默认为开启状态,下面是在php.ini中PDO的配置: extension=php_pdo.dll 为了启用对某个数据库的支持,需要在php配置文件中将相应的扩展打开,例如要支持MySQL,需要开启下面的扩展 extension=php_pdo_mysql.dll