PHP PDO对mysql的常规操作
博客专区 > jichun 的博客 > 博客详情
PHP PDO对mysql的常规操作
jichun 发表于3个月前
PHP PDO对mysql的常规操作
  • 发表于 3个月前
  • 阅读 4
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: php pdo对mysql的常规操作,包括增删改查,与多条数据插入与一些使用注意事项。

平时常用框架自带的类来操作数据库,今天重温php的pdo的相关知识,记录如下。

PHP PDO链接MySql数据库

$db = new PDO('mysql:host=localhost;dbname=test','root','123456');
$db->exec('set names utf-8');

其中,localhost可以改写为ip地址。若为正式环境,建议写线上服务器的内网地址;root为数据库用户名,123456为密码。

假若建表如下

CREATE TABLE `news` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  `ctime` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

 

查询

简单查询

$sql = "select * from news order by id desc";
$db->query($sql)->fetchAll(PDO::FETCH_ASSOC);

或用占位符

$sql = "select * from news where id >= ? order by id desc";
$sth = $db->prepare($sql);
$sth->execute([1]);
print_r($sth->fetchAll(PDO::FETCH_ASSOC));

若数据量大,为减轻数据库压力,可以用fetch更换fetchAll。再遍历结果集获取查询后的关联数组。

$sql = "select * from news where id >= ? order by id desc";
$sth = $db->prepare($sql);
$result = [];
while($row = $sth->fetch(PDO::FETCH_ASSOC)){
    $result[] = $row;
}

 

添加

$sql = "insert into news (title,ctime) values ('title1','2017-09-09 10:01:00')";
$sth = $db->prepare($sql);
$sth->execute();

或用占位符

$sql = "insert into news (title, ctime) values (?,?)";
$sth = $db->prepare($sql);
$sth->execute(['title1','2017-09-09 10:01:00']);

添加多条数据

如果想插入多条数据,不想写很多的? ,同时execute又不支持通过二维数组传参 [ ['title1','2017-09-09 10:01:00'], ['title2','2017-09-09 10:02:00'] ].我们可以采用参数绑定的方法(当然也可以拼接sql等),来添加多条数据。

$sql = 'insert into news (title,ctime) values (:title, :ctime)';
$sth = $db->prepare($sql);
$data = [ 
            ['title'=>'title1', 'ctime'=>'2017-09-09 10:01:00'],
            ['title' => 'title2', 'ctime' =>'2017-09-09 10:02:00']
        ];
try {
     $db->beginTransaction();
     foreach ($data as $item) {
         $sth->bindValue(':title', $item['title']);
         $sth->bindValue(':ctime', $item['ctime']);
         $sth->execute();
     }
    $db->commit();
} catch (PDOException $e) {
    $db->rollBack();
}

 

修改

$sql = "update news set title = 'news01' where id = 1";
$sth = $db->prepare($sql);
$sth->execute();

$sql = "update news set title = 'news01' where id = ?";
$sth = $db->prepare($sql);
$sth->execute([1]);

 

删除

$sql = "delete from news where id = 2";
$sth = $db->prepare($sql);
$sth->execute();

$sql = "delete from news where id = ?";
$sth = $db->prepare($sql);
$sth->execute([1]);

 

共有 人打赏支持
粉丝 0
博文 14
码字总数 6321
×
jichun
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: