PHP PDO实例,实现简单的mysql增删改查

连接数据库

/* 连接 */
try {
	$pdo = new PDO("mysql:host=数据库地址;dbname=数据库名称", "数据库账号", "数据库密码");
} catch (PDOException $e) {
	die ("连接数据库失败:".$e->getMessage());
}

/* 关闭 */
$pdo = null;

$pdo = new PDO("mysql:host=数据库地址;dbname=数据库名称","数据库账号","数据库密码");

/* 最简单insert */
$queryObj = $pdo->query("INSERT INTO `pages` (name, date) values('Sun', '2020-02-02 00:00:00')");
echo $queryObj->rowCount(); // 影响条数
echo 'New ID: '.$pdo->lastinsertid(); // 最新ID


/* 例子 */
$sql = "INSERT INTO `user` (`login` ,`password`) VALUES (:login, :password)";
$stmt = $pdo->prepare($sql);
$stmt->execute( array(':login'=>'John',':password'=>md5('ADCkiller')) );    
echo $pdo->lastinsertid();


/* 例子 */
$sql = "INSERT INTO score (sno, cno) VALUES (:sno, :cno)";
$result = $pdo->prepare($sql);
$result->bindParam(':sno',$sno);
$result->bindParam(':cno',$cno);
$sno = 'one';
$cno = 100;
$result->execute(); //返回布尔;
var_dump( $pdo->lastInsertId() );


/* Disconnect */
$pdo = null;

$pdo = new PDO("mysql:host=数据库地址;dbname=数据库名称","数据库账号","数据库密码");

/* 最简单delete */
$rowCount = $pdo->query("DELETE FROM `pages` WHERE `id` = 888888")->rowCount();
echo $rowCount;

/* 带参数 */
$sql = "DELETE FROM `pages` WHERE `id` = :id ";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':id', 100000);
$stmt->execute();
echo $stmt->rowCount();


/* Disconnect */
$pdo = null;

$pdo = new PDO("mysql:host=数据库地址;dbname=数据库名称","数据库账号","数据库密码");
$rowsAffected = $pdo->exec("UPDATE `pages` SET `status`= 0 WHERE `id`= 221678");
var_dump( $rowsAffected ); // 影响行数


/* 例子 */
$sql = "UPDATE `pages` SET `status`=:status WHERE `id`=:id";
$stmt = $pdo->prepare($sql);
$stmt->execute(array(':status'=> 1, ':id'=>'221676'));
$rowsUpdated = $stmt->rowCount(); // 如果数据重复,没有改动,也是返回0,请注意
echo $rowsUpdated;


/* Disconnect */
$pdo = null;

$pdo = new PDO("mysql:host=数据库地址;dbname=数据库名称","数据库账号","数据库密码");

/* 最简单查询,PDO::FETCH_ASSOC等解释在最下面 */
$queryObj = $pdo->query("select * from users where username='admin'");
$resultArrOneRow = $queryObj->fetch( PDO::FETCH_ASSOC ); // 单行数据,一维数组,建议foreach() + fetch()

$queryObj = $pdo->query("select * from users where username='admin'");
$resultArrRows = $queryObj->fetchAll( PDO::FETCH_ASSOC ); // 所有数据,二维数组


/* 带参数查询 */
$login = 'admin';
$sql = "SELECT * FROM `users` WHERE `username` = :login_string";
$stmt = $pdo->prepare($sql);
$stmt->execute( array(':login_string' => $login) );
$result = $stmt->fetchAll( PDO::FETCH_ASSOC );
//print_r( $result ); 


/* 带参数查询 */
$login = 'adm%';
$sql = "SELECT * FROM `users` WHERE `username` LIKE :login_string";
$stmt = $pdo->prepare($sql);
$stmt->execute( array(':login_string' => $login) );
$result = $stmt->fetchAll( PDO::FETCH_ASSOC );
//print_r( $result ); 


/* Left join */
$STM = $pdo->prepare("SELECT * FROM table1 LEFT JOIN table2 ON table1.typeid = table2.id WHERE table1.name = ? ");
$STM->bindValue(1, 'david');
$STM->execute();
$result = $STM->fetchAll( PDO::FETCH_ASSOC );
//print_r( $result ); 

/* right join */
$searching_name = 'david';
$STM = $pdo->prepare("SELECT * FROM table1 RIGHT JOIN table2 ON table2.id = table1.typeid WHERE table1.name = :name ");
$STM->bindParam(':name', $searching_name); // bindParam第二个参数只能是一个变量,bindValue就随意
$STM->execute();
$result = $STM->fetchAll( PDO::FETCH_ASSOC );
//print_r( $result ); 


/* Disconnect */
$pdo = null;

更多参数

说 明
PDO::FETCH_ASSOC 关联数组形式。
PDO::FETCH_NUM 数字索引数组形式。
PDO::FETCH_BOTH 两者数组形式都有,这是默认的。
PDO::FETCH_OBJ 按照对象的形式,类似于以前的mysql_fetch_object()函数。
PDO::FETCH_BOUND 以布尔值的形式返回结果,同时将获取的列值赋给bindParam()方法中指定的变量。
PDO::FETCH_LAZY 以关联数组、数字索引数组和对象3种形式返回结果。
发布了166 篇原创文章 · 获赞 58 · 访问量 66万+

猜你喜欢

转载自blog.csdn.net/qq285744011/article/details/103560544