Maison  >  Article  >  développement back-end  >  Utiliser PDO pour faire fonctionner la base de données MySQL

Utiliser PDO pour faire fonctionner la base de données MySQL

不言
不言original
2018-04-23 10:05:121828parcourir

Le contenu de cet article concerne l'utilisation de PDO pour faire fonctionner la base de données MySQL. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer


<.>

Créez d'abord une base de données. Copiez le code dans le fichier TXT, puis enregistrez-le sous 'Create Database.txt' et enfin modifiez-le en 'Create Database.sql', et enfin utilisez Navicat pour exécuter le fichier de base de données. La base de données est créée.

Le code est le suivant :

CREATE TABLE `user` (  
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,  
  `name` varchar(25) NOT NULL DEFAULT &#39;&#39;,  
  `gender` tinyint(1) NOT NULL DEFAULT &#39;1&#39;,  
  `age` int(11) NOT NULL DEFAULT &#39;0&#39;,  
  `flag` tinyint(1) NOT NULL DEFAULT &#39;1&#39;,  
  PRIMARY KEY (`id`)  
) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;  
  
/*Data for the table `user` */  
  
insert  into `user`(`id`,`name`,`gender`,`age`,`flag`) values (1,&#39;allen&#39;,1,20,1),(2,&#39;alice&#39;,2,18,1),(3,&#39;bob&#39;,1,21,1),(4,&#39;dave&#39;,1,25,1),(5,&#39;eve&#39;,2,20,1),(6,&#39;joy&#39;,1,21,1),(7,&#39;june&#39;,1,23,1),(8,&#39;linda&#39;,2,22,1),(9,&#39;lisa&#39;,2,22,1),(10,&#39;liz&#39;,2,23,1);

Créez ensuite un nouveau fichier PHP. pdo.php

<?php  
  
$db = array(  
    &#39;host&#39; => &#39;127.0.0.1&#39;,         //设置服务器地址  
    &#39;port&#39; => &#39;3306&#39;,              //设端口   
    &#39;dbname&#39; => &#39;test&#39;,             //设置数据库名        
    &#39;username&#39; => &#39;root&#39;,           //设置账号  
    &#39;password&#39; => &#39;yangji0321&#39;,      //设置密码  
    &#39;charset&#39; => &#39;utf8&#39;,             //设置编码格式  
    &#39;dsn&#39; => &#39;mysql:host=127.0.0.1;dbname=test;port=3306;charset=utf8&#39;,   //这里不知道为什么,也需要这样再写一遍。  
);  
  
//连接  
$options = array(  
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, //默认是PDO::ERRMODE_SILENT, 0, (忽略错误模式)  
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, // 默认是PDO::FETCH_BOTH, 4  
);  
  
try{  
    $pdo = new PDO($db[&#39;dsn&#39;], $db[&#39;username&#39;], $db[&#39;password&#39;], $options);  
}catch(PDOException $e){  
    die(&#39;数据库连接失败:&#39; . $e->getMessage());  
}  
  
//或者更通用的设置属性方式:  
//$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);    //设置异常处理方式  
//$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);   //设置默认关联索引遍历  
  
echo &#39;<pre/>&#39;;  
  
//1 查询  
  
//1)使用query  
$stmt = $pdo->query(&#39;select * from user limit 2&#39;); //返回一个PDOStatement对象  
  
//$row = $stmt->fetch(); //从结果集中获取下一行,用于while循环  
$rows = $stmt->fetchAll(); //获取所有  
  
$row_count = $stmt->rowCount(); //记录数,2  
print_r($rows);  
  
  
  
  
  
  
  
echo &#39;<br>&#39;;  
  
//2)使用prepare 推荐!  
$stmt = $pdo->prepare("select * from user where name = ? and age = ? ");  
$stmt->bindValue(1,&#39;allen&#39;);  
$stmt->bindValue(2,20);  
$stmt->execute();  //执行一条预处理语句 .成功时返回 TRUE, 失败时返回 FALSE   
$rows = $stmt->fetchAll();  
$row_count = $stmt->rowCount(); //记录数,2  
print_r($rows);  
print_r($row_count);  
  
  
  
echo &#39;<br>&#39;;  
  
  
  
  
//2 新增、更新、删除  
//A.1)普通操作  
//$count  =  $pdo->exec("insert into user(name,gender,age)values(&#39;test&#39;,2,23)"); //返回受影响的行数   
//echo $pdo->lastInsertId();  
  
//$count  =  $pdo->exec("update user set name=&#39;test2&#39; where id = 15"); //返回受影响的行数  
//$count  =  $pdo->exec("delete from  user where id = 15"); //返回受影响的行数  
  
  
//A.2)使用prepare 推荐!  
  
$stmt = $pdo->prepare("insert into user(name,gender,age)values(?,?,?)");  
$stmt->bindValue(1, &#39;test&#39;);  
$stmt->bindValue(2, 2);  
$stmt->bindValue(3, 23);  
$stmt->execute();  
$count = $stmt->rowCount();//受影响行数  
echo &#39;prepare方法影响行数:&#39;.$count;    
echo &#39;<br>&#39;;  
  
  
//A.3)使用prepare 批量新增  
  
$stmt = $pdo->prepare("insert into user(name,gender,age)values(?,?,?)");  
$stmt->bindParam(1, $name);  
$stmt->bindParam(2, $gender);  
$stmt->bindParam(3, $age);  
  
$data = array(  
    array(&#39;t1&#39;, 1, 22),  
    array(&#39;t2&#39;, 2, 23),  
);  
  
foreach ($data as $vo){  
    list($name, $gender, $age) = $vo;  
    $stmt->execute();  
}  
  
  
  
  
//B)更新操作  
echo &#39;<br>&#39;;  
  
$stmt = $pdo->prepare("UPDATE `user` SET `age`=? WHERE (`name`= ? )");  
$stmt->bindValue(1, &#39;20&#39;);  
$stmt->bindValue(2, &#39;allen&#39;);  
$num = $stmt->execute();  
$count = $stmt->rowCount();//受影响行数  
echo &#39;更新操作影响行数:&#39;.$count;    
  
  
  
  
  
  
  
  
  
//删除操作  
$stmt = $pdo->prepare("DELETE FROM `user` WHERE (`name`= ? )");  
$stmt->bindValue(1, &#39;t1&#39;);  
$num = $stmt->execute();  
$count = $stmt->rowCount();//受影响行数  
echo &#39;删除操作影响行数:&#39;.$count;    
  
  
  
  
# 【示例5:统计数据】:统计company表有多少条数据  
echo &#39;<br>&#39;;  
  
$num = $pdo->query("select count(*) from user");  
$count = $num->fetchColumn();  
echo &#39;共有数据:【&#39;.$count.&#39;】条&#39;;  
  
  
  
  
?>  
  
  
pdo::query()方法  
当执行返回结果集的select查询时,或者所影响的行数无关紧要时,应当使用pdo对象中的query()方法.  
如果该方法成功执行指定的查询,则返回一个PDOStatement对象.  
如果使用了query()方法,并想了解获取数据行总数,可以使用PDOStatement对象中的rowCount()方法获取.  
  
pdo::exec()方法  
当执行insert,update,delete没有结果集的查询时,使用pdo对象中的exec()方法去执行.  
该方法成功执行时,将返回受影响的行数.注意,该方法不能用于select查询.  
  
  
  
  
PDO事务:  
  
$pdo->beginTransaction();//开启事务处理  
  
try{  
    //PDO预处理以及执行语句...  
      
    $pdo->commit();//提交事务  
}catch(PDOException $e){  
    $pdo->rollBack();//事务回滚  
      
    //相关错误处理  
    throw $e;  
}
Recommandations associées :

La base de données PHP est basée sur la classe d'opération PDO (mysql)

PDO une fois interroger une ligne de données

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn