日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

PHP MySQLi/PDO_MySQL/PDO_SQLite CRUD(增查改删)

發布時間:2025/4/5 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP MySQLi/PDO_MySQL/PDO_SQLite CRUD(增查改删) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

PHP MySQLi:

http://php.net/mysqli

<?phpfunction db() {global $app;static $db; //1個請求內多個函數共用1個連接.if ($db) {return $db;} else {$db = @new mysqli($app['db_host'], $app['db_user'], $app['db_pass'], $app['db_name'], $app['db_port']);}if ($db->connect_errno) {echo $db->connect_error;exit();}$db->set_charset('utf8');return $db; }function insert($title = '', $content = '') {global $app;$db = db();$stmt = $db->prepare('INSERT INTO posts (post_title, post_content) VALUES (?, ?)');$stmt->bind_param('ss', $title, $content);$stmt->execute();//插入失敗,或者沒有AUTO_INCREMENT字段,或者不是INSERT語句,insert_id為0.return ($stmt->affected_rows !== 0 && $stmt->affected_rows !== -1) ? array(true, 'insert_id' => $stmt->insert_id) : array(false, 'insert_id' => $stmt->insert_id); }function select($id = '') {global $app;$db = db();if (!empty($id)) {return $db->query('SELECT * FROM posts WHERE id = '.intval($id))->fetch_all(MYSQLI_ASSOC);} else {return $db->query('SELECT * FROM posts')->fetch_all(MYSQLI_ASSOC);} }function select_v2($id = '') {global $app;$db = db();if (!empty($id)) {$stmt = $db->prepare('SELECT * FROM posts WHERE id = ?');$stmt->bind_param('i', $id);} else {$stmt = $db->prepare('SELECT * FROM posts');}$stmt->execute();//get_result和fetch_all需要mysqlnd支持,PHP從5.4開始內置mysqlnd.return $stmt->get_result()->fetch_all(MYSQLI_ASSOC); }function update($id, $title = '', $content = '') {global $app;$db = db();//var_export($db->query('SELECT @@autocommit')->fetch_all(MYSQLI_ASSOC)); exit(); //返回1可見MySQL默認會自動提交事務.$db->query('SET AUTOCOMMIT=0'); //$db->autocommit(false);//注意,InnoDB引擎會把寫操作(insert/update/delete)當做事務來處理.//所以commit提交事務后autocommit記得重新設為true,否則delete等這些寫操作因為沒有手動commit會自動回滾.$db->query('START TRANSACTION'); //$db->begin_transaction(); PHP從5.5開始才有這個函數.$stmt = $db->prepare('UPDATE posts SET post_title = ?, post_content = ? WHERE id = ?');$stmt->bind_param('ssi', $title, $content, $id);$stmt->execute();$db->query('COMMIT'); //$db->commit();//$db->query('ROLLBACK'); //$db->rollback();$db->query('SET AUTOCOMMIT=1'); //commit提交事務后autocommit記得重新設為true.//UPDATE時,如果更新的內容跟原來的內容一樣,affected_rows也會返回0.return ($stmt->affected_rows !== 0 && $stmt->affected_rows !== -1) ? true : false;//affected_rows://返回-1表示查詢出錯.//返回0表示沒有數據被修改.//返回1表示有1條數據被修改.//如果返回的值大于PHP_INT_MAX,這時affected_rows的類型是一個字符串. }function delete($id) {global $app;$db = db();$db->query('DELETE FROM posts WHERE id = '.intval($id));return ($db->affected_rows !== 0 && $db->affected_rows !== -1) ? true : false; }function delete_v2($id) {global $app;$db = db();$stmt = $db->prepare('DELETE FROM posts WHERE id = ?');$stmt->bind_param('i', $id);$stmt->execute();return ($stmt->affected_rows !== 0 && $stmt->affected_rows !== -1) ? true : false; }header('Content-Type: text/plain; charset=utf-8');//mysql -uroot -p -e "CREATE DATABASE IF NOT EXISTS tuxbase DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;GRANT ALL PRIVILEGES ON tuxbase.* TO tux@127.0.0.1 IDENTIFIED BY '913dab0c6788bb8f0';FLUSH PRIVILEGES;" $app = array('db_host' => '127.0.0.1','db_user' => 'tux','db_pass' => '913dab0c6788bb8f0','db_name' => 'tuxbase','db_port' => 3306 );$table = "CREATE TABLE IF NOT EXISTS posts (id int(10) unsigned NOT NULL AUTO_INCREMENT,post_title varchar(255) NOT NULL DEFAULT '',post_content text NOT NULL DEFAULT '',PRIMARY KEY (id) ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;";db()->query('DROP TABLE IF EXISTS posts;') or exit(); db()->query($table) or exit();echo "var_export(insert('標題1', '內容1'));\n"; var_export(insert('標題1', '內容1')); echo "\n\n";echo "var_export(insert('標題2', '內容2'));\n"; var_export(insert('標題2', '內容2')); echo "\n\n";echo "var_export(select());\n"; var_export(select()); echo "\n\n";echo "var_export(update(2, '標題2_更新','內容2_更新'));\n"; var_export(update(2, '標題2_更新','內容2_更新')); echo "\n\n";echo "var_export(select(2));\n"; var_export(select(2)); echo "\n\n";echo "var_export(delete(2));\n"; var_export(delete(2)); echo "\n\n";echo "var_export(select());\n"; var_export(select()); echo "\n\n";

PHP PDO_MySQL:

http://php.net/pdo

<?phpfunction db() {global $app;static $db;if ($db) {return $db;} else {/* MySQL */try {$dsn = "mysql:dbname=$app[db_name];host=$app[db_host];port=$app[db_port];charset=utf8";$db = new PDO($dsn, $app['db_user'], $app['db_pass'], array(PDO::ATTR_PERSISTENT => false,PDO::ATTR_EMULATE_PREPARES => false,PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));} catch (PDOException $e) {echo $e->getMessage();exit();}/* SQLite try {$db = new PDO('sqlite:'.dirname(__FILE__).'/data.db3');} catch (PDOException $e) {echo $e->getMessage();exit();}*/}return $db; }function insert($title = '', $content = '') {global $app;$db = db();$stmt = $db->prepare('INSERT INTO posts (post_title, post_content) VALUES (?, ?)');$stmt->bindParam(1, $title, PDO::PARAM_STR);$stmt->bindParam(2, $content, PDO::PARAM_STR);$stmt->execute();//插入失敗,lastInsertId為0.return ($stmt->rowCount() !== 0) ? array(true, 'lastInsertId' => $db->lastInsertId()) : array(false, 'lastInsertId' => $db->lastInsertId()); }function select($id = '') {global $app;$db = db();if (!empty($id)) {return $db->query('SELECT * FROM posts WHERE id = '.intval($id))->fetchAll(PDO::FETCH_ASSOC);} else {return $db->query('SELECT * FROM posts')->fetchAll(PDO::FETCH_ASSOC);} }function select_v2($id = '') {global $app;$db = db();if (!empty($id)) {$stmt = $db->prepare('SELECT * FROM posts WHERE id = ?');$stmt->bindParam(1, $id, PDO::PARAM_INT);} else {$stmt = $db->prepare('SELECT * FROM posts');}$stmt->execute();return $stmt->fetchAll(PDO::FETCH_ASSOC); }function update($id, $title = '', $content = '') {global $app;$db = db();//echo PDO::ATTR_AUTOCOMMIT; //返回0可見PDO默認禁用自動提交事務.//echo $db->getAttribute(PDO::ATTR_AUTOCOMMIT); exit(); //返回1可見MySQL默認會自動提交事務.//SQLite不支持設置PDO::ATTR_AUTOCOMMIT://SQLite: Uncaught exception 'PDOException' with message 'The auto-commit mode cannot be changed for this driver'$db->setAttribute(PDO::ATTR_AUTOCOMMIT, false);$db->beginTransaction();//方法1(問號占位符)$stmt = $db->prepare('UPDATE posts SET post_title = ?, post_content = ? WHERE id = ?');$stmt->execute(array($title,$content,$id)); //所有值視作PDO::PARAM_STR處理//方法1(命名占位符)//$stmt = $db->prepare('UPDATE posts SET post_title = :title, post_content = :content WHERE id = :id');//$stmt->execute(array(':title' => $title,':content' => $content,':id' => $id)); //所有值視作PDO::PARAM_STR處理//方法2(問號占位符)//$stmt = $db->prepare('UPDATE posts SET post_title = ?, post_content = ? WHERE id = ?');//$stmt->bindParam(1, $title, PDO::PARAM_STR);//$stmt->bindParam(2, $content, PDO::PARAM_STR);//$stmt->bindParam(3, $id, PDO::PARAM_INT);//$stmt->execute();//方法2(命名占位符)//$stmt = $db->prepare('UPDATE posts SET post_title = :title, post_content = :content WHERE id = :id');//$stmt->bindParam(':title', $title, PDO::PARAM_STR);//$stmt->bindParam(':content', $content, PDO::PARAM_STR);//$stmt->bindParam(':id', $id, PDO::PARAM_INT);//$stmt->execute();//MySQLi只有一種寫法(MySQLi不支持命名占位符)//$stmt = $db->prepare('UPDATE posts SET post_title = ?, post_content = ? WHERE id = ?');//$stmt->bind_param('ssi', $title, $content, $id);echo 'sleep(3);'."\n";sleep(3);$db->commit();$db->setAttribute(PDO::ATTR_AUTOCOMMIT, true); //commit提交事務后autocommit記得重新設為truereturn ($stmt->rowCount() !== 0) ? true : false; }function delete($id) {global $app;$db = db();return ($db->query('DELETE FROM posts WHERE id = '.intval($id))->rowCount() !== 0) ? true : false; }function delete_v2($id) {global $app;$db = db();$stmt = $db->prepare('DELETE FROM posts WHERE id = ?');$stmt->bindParam(1, $id, PDO::PARAM_INT);$stmt->execute();return ($stmt->rowCount() !== 0) ? true : false; }header('Content-Type: text/plain; charset=utf-8');$app = array('db_host' => '127.0.0.1','db_user' => 'tux','db_pass' => '913dab0c6788bb8f0','db_name' => 'tuxbase','db_port' => 3306 );$mysql = "CREATE TABLE IF NOT EXISTS posts (id int(10) unsigned NOT NULL AUTO_INCREMENT,post_title varchar(255) NOT NULL DEFAULT '',post_content text NOT NULL DEFAULT '',PRIMARY KEY (id) ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;";$sqlite = "CREATE TABLE IF NOT EXISTS posts (id INTEGER PRIMARY KEY,post_title VARCHAR(255) NOT NULL,post_content TEXT NOT NULL )";db()->query('DROP TABLE IF EXISTS posts;') or exit(); db()->query($mysql) or exit();//并發時,SQLite在insert時因為庫文件被其他請求鎖住而導致阻塞 echo "var_export(insert('標題1', '內容1'));\n"; var_export(insert('標題1', '內容1')); echo "\n\n";echo "var_export(insert('標題2', '內容2'));\n"; var_export(insert('標題2', '內容2')); echo "\n\n";echo "var_export(select());\n"; var_export(select()); echo "\n\n";echo "var_export(update(2, '標題2_更新','內容2_更新'));\n"; var_export(update(2, '標題2_更新','內容2_更新')); echo "\n\n";echo "var_export(select(2));\n"; var_export(select(2)); echo "\n\n";echo "var_export(delete(2));\n"; var_export(delete(2)); echo "\n\n";echo "var_export(select());\n"; var_export(select()); echo "\n\n";

PHP PDO_SQLite:

<?phpfunction db() {global $app;static $db;if ($db) {return $db;} else {/* MySQL try {$dsn = "mysql:dbname=$app[db_name];host=$app[db_host];port=$app[db_port];charset=utf8";$db = new PDO($dsn, $app['db_user'], $app['db_pass'], array(PDO::ATTR_PERSISTENT => false,PDO::ATTR_EMULATE_PREPARES => false,PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));} catch (PDOException $e) {echo $e->getMessage();exit();}*//* SQLite */try {$db = new PDO('sqlite:'.dirname(__FILE__).'/data.db3');} catch (PDOException $e) {echo $e->getMessage();exit();}}return $db; }function insert($title = '', $content = '') {global $app;$db = db();$stmt = $db->prepare('INSERT INTO posts (post_title, post_content) VALUES (?, ?)');$stmt->bindParam(1, $title, PDO::PARAM_STR);$stmt->bindParam(2, $content, PDO::PARAM_STR);$stmt->execute();return ($stmt->rowCount() !== 0) ? array(true, 'lastInsertId' => $db->lastInsertId()) : array(false, 'lastInsertId' => $db->lastInsertId()); }function select($id = '') {global $app;$db = db();if (!empty($id)) {return $db->query('SELECT * FROM posts WHERE id = '.intval($id))->fetchAll(PDO::FETCH_ASSOC);} else {return $db->query('SELECT * FROM posts')->fetchAll(PDO::FETCH_ASSOC);} }function select_v2($id = '') {global $app;$db = db();if (!empty($id)) {$stmt = $db->prepare('SELECT * FROM posts WHERE id = ?');$stmt->bindParam(1, $id, PDO::PARAM_INT);} else {$stmt = $db->prepare('SELECT * FROM posts');}$stmt->execute();return $stmt->fetchAll(PDO::FETCH_ASSOC); }function update($id, $title = '', $content = '') {global $app;$db = db();//echo PDO::ATTR_AUTOCOMMIT; //返回0可見PDO默認禁用自動提交事務.//echo $db->getAttribute(PDO::ATTR_AUTOCOMMIT); exit(); //返回1可見MySQL默認會自動提交事務.//SQLite不支持設置PDO::ATTR_AUTOCOMMIT://SQLite: Uncaught exception 'PDOException' with message 'The auto-commit mode cannot be changed for this driver'//$db->setAttribute(PDO::ATTR_AUTOCOMMIT, false);$db->beginTransaction();$stmt = $db->prepare('UPDATE posts SET post_title = ?, post_content = ? WHERE id = ?');$stmt->execute(array($title,$content,$id)); //所有值視作PDO::PARAM_STR處理//$stmt->execute(array(':title' => $title,':content' => $content,':id' => $id));//$stmt->bind_param('ssi', $title, $content, $id); //對比mysqliecho 'sleep(3);'."\n";sleep(3);$db->commit();//$db->setAttribute(PDO::ATTR_AUTOCOMMIT, true); //commit提交事務后autocommit記得重新設為truereturn ($stmt->rowCount() !== 0) ? true : false; }function delete($id) {global $app;$db = db();return ($db->query('DELETE FROM posts WHERE id = '.intval($id))->rowCount() !== 0) ? true : false; }function delete_v2($id) {global $app;$db = db();$stmt = $db->prepare('DELETE FROM posts WHERE id = ?');$stmt->bindParam(1, $id, PDO::PARAM_INT);$stmt->execute();return ($stmt->rowCount() !== 0) ? true : false; }header('Content-Type: text/plain; charset=utf-8');$app = array('db_host' => '127.0.0.1','db_user' => 'tux','db_pass' => '913dab0c6788bb8f0','db_name' => 'tuxbase','db_port' => 3306 );$mysql = "CREATE TABLE IF NOT EXISTS posts (id int(10) unsigned NOT NULL AUTO_INCREMENT,post_title varchar(255) NOT NULL DEFAULT '',post_content text NOT NULL DEFAULT '',PRIMARY KEY (id) ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;";$sqlite = "CREATE TABLE IF NOT EXISTS posts (id INTEGER PRIMARY KEY,post_title VARCHAR(255) NOT NULL,post_content TEXT NOT NULL )";db()->query('DROP TABLE IF EXISTS posts;') or exit(); db()->query($sqlite) or exit();//并發時,SQLite在insert時因為庫文件被其他請求鎖住而導致阻塞 echo "var_export(insert('標題1', '內容1'));\n"; var_export(insert('標題1', '內容1')); echo "\n\n";echo "var_export(insert('標題2', '內容2'));\n"; var_export(insert('標題2', '內容2')); echo "\n\n";echo "var_export(select());\n"; var_export(select()); echo "\n\n";echo "var_export(update(2, '標題2_更新','內容2_更新'));\n"; var_export(update(2, '標題2_更新','內容2_更新')); echo "\n\n";echo "var_export(select(2));\n"; var_export(select(2)); echo "\n\n";echo "var_export(delete(2));\n"; var_export(delete(2)); echo "\n\n";echo "var_export(select());\n"; var_export(select()); echo "\n\n";

?

轉載于:https://my.oschina.net/eechen/blog/663332

總結

以上是生活随笔為你收集整理的PHP MySQLi/PDO_MySQL/PDO_SQLite CRUD(增查改删)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 天堂在线成人 | 欧美精品黄色 | 日本男人的天堂 | 边打电话边做 | 国产精品综合在线 | 爱情岛av永久入口 | 黄色一级免费网站 | 国产第八页| 国产日韩欧美在线观看视频 | 欧美少妇一级片 | 国产美女在线播放 | 亚洲一区二区三区蜜桃 | 97视频免费在线 | 日本三级生活片 | 国产制服在线 | 欧美激情999 | 色欧美88888久久久久久影院 | 一区二区视频在线 | 日本一区二区久久 | 麻豆视| 日韩成人免费在线观看 | 神马久久网 | 欧美日韩国产色 | 国产自产 | 精品国产av一区二区 | 日韩成人激情视频 | 久久久性色精品国产免费观看 | 99视频网站| 亚洲精品一区二区三区四区五区 | 日本黄色免费大片 | 九色91蝌蚪 | 男人天堂伊人 | 视频区图片区小说区 | va婷婷 | 国产女人毛片 | 高清av网址| 一边摸一边抽搐一进一出视频 | 500福利视频导航 | 成人免费毛片东京热 | 91在线视频导航 | 日本视频网站在线观看 | wwwxxx在线播放 | 四虎影院成人 | 操操操操操操操操操 | 午夜久久久 | 亚洲国产图片 | 日韩电影中文字幕 | 特级西西444www大精品视频 | 欧美成人怡红院 | 国产精品夜色一区二区三区 | 日韩免费成人av | 黄色网址视频 | 欧美三级视频网站 | 摸摸大奶子 | 欧美日韩系列 | 欧美少妇性生活 | 狠狠操你| 天天干天天狠 | 黑人操日本女人 | 动漫美女无遮挡免费 | 草草影院在线 | 麻豆蜜桃av | 99re这里只有精品在线 | 97se视频| 青娱乐超碰在线 | 69久久久| 九九热播视频 | 国产精品扒开腿做爽爽爽a片唱戏 | 百合sm惩罚室羞辱调教 | 曰批女人视频在线观看 | 华丽的外出在线观看 | 国产福利视频网站 | 最新91视频 | 欧美福利一区二区 | 欧美亚洲日本在线 | 国产一级大片在线观看 | 99精品视频免费观看 | 亚洲性在线 | 国内自拍第二页 | 久色伊人 | 和漂亮岳做爰3中文字幕 | 黄色av一级| 精品国产人妻一区二区三区 | 欧美男人操女人 | 日韩三级中文字幕 | 姑娘第5集在线观看免费好剧 | 亚洲videos| 成人福利视频网站 | 亚洲理论中文字幕 | 欧美色图一区二区 | 欧美大尺度做爰啪啪床戏明星 | 丝袜美腿av在线 | 欧美大片高清免费观看 | 正在播放木下凛凛88av | 人人曰 | 黄视频免费观看 | 日韩一级在线视频 | 天天射综合网站 | 久久艹av|