
批改狀態(tài):合格
老師批語:
操作簡稱:CURD,增刪改查、它代表創(chuàng)建(Create)、更新(Update)、讀?。≧etrieve)和刪除(Delete)操作。
連接數(shù)據(jù)庫
<?php
namespace pdo_deu;
return [
// dsn
'type' => 'mysql',
'host' => '127.0.0.1',
'dbname' => 'mydb',
'port' => '3306',
'charset' => 'utf8',
// username
'username' => 'myshop',
'password' => 'yzj123',
];
<?php
namespace pdo_deu;
use PDO;
$dbConfig = require 'database.php';
extract($dbConfig); //extract()提取參數(shù) 將關(guān)聯(lián)數(shù)組中的每一個成員,打散成獨立變量
// printf('<pre>%s</pre>',print_r($dbConfig,true));
// 1. dsn
$tpl = '%s:host=%s;dbname=%s;port=%s;charset=%s';
$args = [$type,$host,$dbname,$port,$charset];
$dsn = sprintf($tpl,...$args);
// echo $dsn;
// 2. 創(chuàng)建數(shù)據(jù)對象
$db = new PDO($dsn, $username, $password);
// var_dump($db);
if($db){
echo '數(shù)據(jù)庫連接成功!';
}
// 設(shè)置結(jié)果集的默認獲取模式:只要關(guān)聯(lián)部分
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
1、CURD: INSERT 插入數(shù)據(jù)
<?php
namespace php_edu;
// 1、連接數(shù)據(jù)庫
require __DIR__ .'/config/connect.php';
$sql = 'INSERT `staff` SET `name` = ?, `sex` = ?, `email` = ?';
$stmt = $db->prepare($sql);
//2、執(zhí)行SQL語句
$stmt->execute(['小龍女', 1, 'xiaolongnv@php.cn']);
$stmt->execute(['洪七公', 0, 'hongqigong@php.cn']);
$stmt->execute(['黃蓉', 0, 'huangrong@php.cn']);
// 成功
if($stmt->rowCount() > 0){
echo '新增成功,新增記錄的主鍵ID = ' . $db->lastInsertId();
}else{
echo '新增失敗';
print_r($stmt->errorInfo());
}
2、CURD: UPDATE
<?php
namespace php_deu;
// 1、連接數(shù)據(jù)庫
require __DIR__ .'/config/connect.php';
// 2.CURD: UPDATE 更新
// UPDATE 表名 SET 字段1=值1 ... WHERE 更新條件
$sql = 'UPDATE `staff` SET `name` = ? WHERE `id` = ?';
$stmt = $db->prepare($sql);
$stmt->execute(['黃蓉2',3]);
if($stmt->rowCount() > 0){
echo '更新成功';
} else {
echo '更新失敗';
print_r($stmt->errorInfo());
}
3、CURD: DELETE
<?php
namespace php_edu;
// 1、連接數(shù)據(jù)庫
require __DIR__.'/config/connect.php';
// 2、CURD:DELETE 刪除
// DELETE FROM 表名 SET 字段1=值1 ... WHERE 更新條件
// $sql = 'DELETE FROM `staff` WHERE `id` = ?';
// '?' :匿名占位符
// 'string': 命名占位符
$sql = 'DELETE FROM `staff` WHERE `id` = :id';
$stmt = $db->prepare($sql);
$stmt->execute([':id' => $_GET['id']]);
// 如果條件來自外部,例如url中g(shù)et參數(shù)
echo $_GET['id'];
if($stmt->rowCount() > 0){
echo 'id = '.$_GET['id'].' 刪除成功';
}else{
echo '刪除失敗<hr>';
print_r($stmt->errorInfo());
}
4、CURD: SELECT
(1)單條查詢
<?php
namespace php_edu;
use PDO;
// 1.連接數(shù)據(jù)庫
require __DIR__.'/config/connect.php';
// 2. CURD: SELECT 單條查詢
// SELECT 字段列表 FROM 表名 WHERE 查詢條件
$sql = 'SELECT `id`,`name` FROM `staff` WHERE `id` > :id';
$stmt = $db->prepare($sql);
$stmt->execute(['id'=>0]);
// 單條查詢
// $staff = $stmt->fetch(PDO::FETCH_ASSOC);
// printf('<pre>%s</pre>',print_r($staff,true));
// PDO::FETCH_ASSOC:結(jié)果集獲取模式,只返回關(guān)聯(lián)部分
while($staff = $stmt->fetch()){
printf('<pre>%s</pre>',print_r($staff,true));
}
(2)多條查詢
<?php
namespace php_edu;
use PDO;
// 1.連接數(shù)據(jù)庫
require __DIR__ .'/config/connect.php';
// 2.CURD: SELECT 多條查詢
// SELECT 字段列表 FROM 表名 WHERE 查詢條件
$sql = 'SELECT `id`,`name` FROM `staff` WHERE `id` > :id';
$stmt = $db->prepare($sql);
$stmt->execute(['id' => 1]);
// fetchAll: 返回全部滿足條件的記錄集合,二維數(shù)組
$staffs = $stmt->fetchAll();
// print_r($staffs);
printf('<pre>%s</pre>',print_r($staffs,true));
foreach($staffs as $staff){
printf('<pre>%s</pre>',print_r($staff,true));
}
(1)為什么要用預處理(語句被執(zhí)行前進行一些處理)
2、數(shù)據(jù)延遲綁定
3、編程時只寫SQL語句模板,執(zhí)行SQL時再給占位符綁定真實數(shù)據(jù)
(2)預處理過程
微信掃碼
關(guān)注PHP中文網(wǎng)服務號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號