PDO操作数据库总结

Original 2018-12-11 14:50:52 350
abstract:查操作<?php /**  * PDO 常规查询  */ //1.连接数据库 $pdo = new PDO('mysql:dbname=php_edu','root','root'); //2.执行查询 //准备sql语句 $sql = "S

查操作

<?php
/**
 * PDO 常规查询
 */

//1.连接数据库
$pdo = new PDO('mysql:dbname=php_edu','root','root');

//2.执行查询
//准备sql语句
$sql = "SELECT `id`,`name`,`email`,`create_time` FROM `user` WHERE `status` = :status ;";

//验证sql语句并生成预处理对象
$stmt = $pdo->prepare($sql);
//执行
$stmt->execute([':status'=>1]);

//fetch()进行遍历
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    //将每条记录转存到一个二维数组中,便于在模板中独立输出
    $rows[] = $row;
}

//释放结果集
$stmt = null;

//关闭连接
$pdo = null;

?>

<style>
    table,th,td {
        border: 1px solid #333;
    }
    table {
        text-align: center;
        border: 1px solid #333;
        width: 50%;
        margin: 30px auto;
        border-collapse: collapse;
    }
    table caption {
        font-size: 1.5em;
        font-weight: bolder;
        margin-bottom: 15px;
    }
    table tr:first-child {
        background-color: lightblue;
    }
</style>
<table>
    <caption style="">用户信息表</caption>
    <tr>
        <th>ID</th>
        <th>姓名</th>
        <th>邮箱</th>
        <th>注册时间</th>
    </tr>
    <?php foreach ($rows as $row) :?>
        <tr>
            <td><?php echo $row['id'] ?></td>
            <td><?php echo $row['name'] ?></td>
            <td><?php echo $row['email'] ?></td>
            <td><?php echo date('Y年 m月 d日',$row['create_time']) ?></td>
        </tr>
    <?php endforeach;?>
</table>

增操作

<?php
//1.连接数据库,创建pdo对象
$pdo = new PDO('mysql:dbname=php_edu','root','root');

//2.创建SQL语句,命名占位符声明参数(IGNORE,必须写紧跟在 INSERT 的后面)
$sql = "INSERT IGNORE INTO `user` (`name`,`email`,`password`,`status`,`create_time`) VALUES 
        (:name,:email,:password,:status,:create_time)";

//3.验证SQL语句,创建预处理对象
$stmt = $pdo->prepare($sql);

//4参数绑定
$name = '李莫愁';
$email = 'lmc@php.cn';
$password = sha1('123456');
$status = 1;
$createTime = time();

$stmt->bindParam(':name',$name,PDO::PARAM_STR,20);
$stmt->bindParam(':email',$email,PDO::PARAM_STR,100);
$stmt->bindParam(':password',$password,PDO::PARAM_STR,40);
$stmt->bindParam(':status',$status,PDO::PARAM_INT);
$stmt->bindParam(':create_time',$createTime,PDO::PARAM_INT);

//5.执行SQL语句(成功true,失败false)
if ($stmt->execute()) {
    echo ($stmt->rowCount()>0) ? '成功添加了'.$stmt->rowCount().'条记录!' : '没有记录被添加!';
} else {
    exit(print_r($stmt->errorInfo(),true));
}

改操作

<?php
//1.连接数据库,创建pdo对象
$pdo = new PDO('mysql:dbname=php_edu','root','root');

//2.创建SQL语句
$sql = "UPDATE `user` SET `email`=:email,`create_time`=:create_time WHERE `id`=:id";

//3.验证SQL语句,创建预处理对象
$stmt = $pdo->prepare($sql);

//4参数绑定
$id = 3;
$email = 'yln@php.cn';
$createTime = time();

$stmt->bindParam(':id',$id,PDO::PARAM_INT);
$stmt->bindParam(':email',$email,PDO::PARAM_STR,100);
$stmt->bindParam(':create_time',$createTime,PDO::PARAM_INT);

//5.执行SQL语句(成功true,失败false)
if ($stmt->execute()) {
    echo ($stmt->rowCount()>0) ? '成功更新了'.$stmt->rowCount().'条记录!' : '没有记录被更新!';
} else {
    exit(print_r($stmt->errorInfo(),true));
}

删除操作太危险,我觉得用改操作完成

$status = 0;
$stmt->bindParam(':status',$status,PDO::PARAM_INT);


Correcting teacher:天蓬老师Correction time:2018-12-11 14:55:10
Teacher's summary:execute中只传入数组就行,不用':status'=>1

Release Notes

Popular Entries