PHP PDO详解攻略

在这里,有一篇名为php-使用-pdo-存取資料庫一存取步驟與常用功能介紹,感觉比大陆那些大网站们写的好多啦(* ̄︶ ̄)y y,1=^_^)y很好懂呢。

官方手册系列传送门

基本上去年在学PHP的时候也写过一篇,PHP 数据库抽象层PDO的使用

以上基本上是所有的参考文章,我们把PDO分为这样几步吧,这次我也是这么按照步骤做下来的:

  • 连接数据库
  • 编写SQL语句
  • 准备
  • 绑定相关值
  • 执行
  • (如果是查询)获取

那么一步步来吧,数据库连接,是根据这里的示例写的:PHP 连接与连接管理 官方手册

这里直接与到时候后端返回给前端的json状态值相连接,所以$status其实是可以忽略的:

<?php
    $dbname = 'sky_microblog';
    $dbhost = 'localhost';
    $user = 'root';
    $password = '';

    $dsn = 'mysql:dbname=' . $dbname . ';host=' . $dbhost . ';';

    $status = 'success';
    try {
        $dbh = new PDO($dsn, $user, $password);
    } catch (PDOException $e) {
        $status = 'database error';
    }
?>

这样就创建好了一次连接。

然后开始include这个文件,SQL语句部分开始,之前的那篇文章其实已经有一个近乎完整的示例了,这里就挑几个坑以及几个点说啦,首先是bindParambindValue的区别,一个是将引用,一个是将值传进去,好了,坑爹的地方到了,请看这里:http://www.laruence.com/2012/10/16/2831.html是不是要大呼卧槽。

其次,我们来看一下这样一段:

$query = 'SELECT * FROM `sky_contents` ORDER BY id DESC LIMIT :showItem OFFSET :offset';

$stmt = $dbh->prepare($query);

$stmt->bindValue(':showItem', $showItem, PDO::PARAM_INT);
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);

好了,为什么要加PDO::PARAM_INT呢,因为默认是传个字符串进去,啧,然后就完蛋啦,我们需要转换为int,这样传入的才是正确的值。

在execute()中,会返回是否成功执行语句(bool)。如果需要返回最后插入的id,可以使用$dbh->lastInsertId();,如果你需要的是关联数组,在fetch时选择FETCH_ASSOC,需要普通的数组,那么使用FETCH_NUM,默认是BOTH,剩下的,似乎也没啥了。

植入部分

如果您觉得文章不错,可以通过赞助支持我。

如果您不希望打赏,也可以通过关闭广告屏蔽插件的形式帮助网站运作。

标签: 知识, 代码段, 语法

添加新评论