php连接mysql使用PDO查询操作的案例
这篇文章主要介绍了php mysql PDO 查询操作的实例详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
php mysql PDO 查询操作的实例详解
<?php $dbh = new PDO('mysql:host=localhost;dbname=access_control', 'root', ''); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $dbh->exec('set names utf8'); /*添加*/ //$sql = "INSERT INTO `user` SET `login`=:login AND `password`=:password"; $sql = "INSERT INTO `user` (`login` ,`password`)VALUES (:login, :password)"; $stmt = $dbh->prepare($sql); $stmt->execute(array(':login'=>'kevin2',':password'=>'')); echo $dbh->lastinsertid(); /*修改*/ $sql = "UPDATE `user` SET `password`=:password WHERE `user_id`=:userId"; $stmt = $dbh->prepare($sql); $stmt->execute(array(':userId'=>'7', ':password'=>'4607e782c4d86fd5364d7e4508bb10d9')); echo $stmt->rowCount(); /*删除*/ $sql = "DELETE FROM `user` WHERE `login` LIKE 'kevin_'"; //kevin% $stmt = $dbh->prepare($sql); $stmt->execute(); echo $stmt->rowCount(); /*查询*/ $login = 'kevin%'; $sql = "SELECT * FROM `user` WHERE `login` LIKE :login"; $stmt = $dbh->prepare($sql); $stmt->execute(array(':login'=>$login)); while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ print_r($row); } print_r( $stmt->fetchAll(PDO::FETCH_ASSOC)); ?>
1 建立连接
<?php $dbh=newPDO('mysql:host=localhost;port=3306; dbname=test',$user,$pass,array( PDO::ATTR_PERSISTENT=>true )); ?>
持久性链接PDO::ATTR_PERSISTENT=>true
2. 捕捉错误
<?php try{ $dbh=newPDO('mysql:host=localhost;dbname=test',$user,$pass); $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $dbh->exec("SET CHARACTER SET utf8"); $dbh=null; //断开连接 }catch(PDOException$e){ print"Error!:".$e->getMessage()."<br/>"; die(); } ?>
3. 事务的
<?php try{ $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $dbh->beginTransaction();//开启事务 $dbh->exec("insertintostaff(id,first,last)values(23,'Joe','Bloggs')"); $dbh->exec("insertintosalarychange(id,amount,changedate) values(23,50000,NOW())"); $dbh->commit();//提交事务 }catch(Exception$e){ $dbh->rollBack();//错误回滚 echo"Failed:".$e->getMessage(); } ?>
4. 错误处理
a. 静默模式(默认模式)
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_SILENT); //不显示错误 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);//显示警告错误,并继续执行 $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);//产生致命错误,PDOException
<?php try{ $dbh = new PDO($dsn, $user, $password); $sql = 'Select * from city where CountryCode =:country'; $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); $stmt = $dbh->prepare($sql); $stmt->bindParam(':country', $country, PDO::PARAM_STR); $stmt->execute(); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { print $row['Name'] . "/t"; } } // if there is a problem we can handle it here catch (PDOException $e) { echo 'PDO Exception Caught. '; echo 'Error with the database: <br />'; echo 'SQL Query: ', $sql; echo 'Error: ' . $e->getMessage(); } ?>
1. 使用 query()
<?php $dbh->query($sql); 当$sql 中变量可以用$dbh->quote($params); //转义字符串的数据 $sql = 'Select * from city where CountryCode ='.$dbh->quote($country); foreach ($dbh->query($sql) as $row) { print $row['Name'] . "/t"; print $row['CountryCode'] . "/t"; print $row['Population'] . "/n"; } ?>
2. 使用 prepare, bindParam和 execute [建议用,同时可以用添加、修改、删除]
<?php $dbh->prepare($sql); 产生了个PDOStatement对象 PDOStatement->bindParam() PDOStatement->execute();//可以在这里放绑定的相应变量 ?>
3. 事物
<?php try { $dbh = new PDO('mysql:host=localhost;dbname=test', 'root', ''); $dbh->query('set names utf8;'); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $dbh->beginTransaction(); $dbh->exec("Insert INTO `test`.`table` (`name` ,`age`)VALUES ('mick', 22);"); $dbh->exec("Insert INTO `test`.`table` (`name` ,`age`)VALUES ('lily', 29);"); $dbh->exec("Insert INTO `test`.`table` (`name` ,`age`)VALUES ('susan', 21);"); $dbh->commit(); } catch (Exception $e) { $dbh->rollBack(); echo "Failed: " . $e->getMessage(); } ?>
PDO常用方法:
PDO::query()主要用于有记录结果返回的操作(PDOStatement),特别是select操作。
PDO::exec()主要是针对没有结果集合返回的操作。如insert,update等操作。返回影响行数。
PDO::lastInsertId()返回上次插入操作最后一条ID,但要注意:如果用insert into tb(col1,col2) values(v1,v2),(v11,v22)..的方式一次插入多条记录,lastinsertid()返回的只是第一条(v1,v2)插入时的ID,而不是最后一条记录插入的记录ID。
PDOStatement::fetch()是用来获取一条记录。配合while来遍历。
PDOStatement::fetchAll()是获取所有记录集到一个中。
PDOStatement::fetchcolumn([int column_indexnum])用于直接访问列,参数column_indexnum是该列在行中的从0开始索引值,但是,这个方法一次只能取得同一行的一列,只要执行一次,就跳到下一行。因此,用于直接访问某一列时较好用,但要遍历多列就用不上。
PDOStatement::rowcount()适用于当用query("select ...")方法时,获取记录的条数。也可以用于预处理中。$stmt->rowcount();
PDOStatement::columncount()适用于当用query("select ...")方法时,获取记录的列数。
注解:
1、选fetch还是fetchall?
小记录集时,用fetchall效率高,减少从数据库检索次数,但对于大结果集,用fetchall则给系统带来很大负担。数据库要向WEB前端传输量太大反而效率低。
2、fetch()或fetchall()有几个参数:
mixed pdostatement::fetch([int fetch_style [,int cursor_orientation [,int cursor_offset]]]) array pdostatement::fetchAll(int fetch_style)
fetch_style参数:
■$row=$rs->fetchAll(PDO::FETCH_BOTH); FETCH_BOTH是默认的,可省,返回关联和索引。
■$row=$rs->fetchAll(PDO::FETCH_ASSOC); FETCH_ASSOC参数决定返回的只有关联数组。
■$row=$rs->fetchAll(PDO::FETCH_NUM); 返回索引数组
■$row=$rs->fetchAll(PDO::FETCH_OBJ); 如果fetch()则返回对象,如果是fetchall(),返回由对象组成的二维数组
Atas ialah kandungan terperinci php连接mysql使用PDO查询操作的案例. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











MySQL dan phpmyadmin boleh diuruskan dengan berkesan melalui langkah -langkah berikut: 1. Buat dan hapus pangkalan data: hanya klik phpmyadmin untuk diselesaikan. 2. Mengurus Jadual: Anda boleh membuat jadual, mengubahsuai struktur, dan menambah indeks. 3. Operasi Data: Menyokong memasukkan, mengemas kini, memadam data dan melaksanakan pertanyaan SQL. 4. Data Import dan Eksport: Menyokong SQL, CSV, XML dan format lain. 5. Pengoptimuman dan Pemantauan: Gunakan arahan yang boleh dioptimumkan untuk mengoptimumkan jadual dan gunakan penganalisis pertanyaan dan alat pemantauan untuk menyelesaikan masalah prestasi.

AI boleh membantu mengoptimumkan penggunaan komposer. Kaedah khusus termasuk: 1. Pengoptimuman Pengurusan Ketergantungan: AI menganalisis kebergantungan, mengesyorkan kombinasi versi terbaik, dan mengurangkan konflik. 2. Generasi Kod Automatik: AI menjana fail komposer.json yang sesuai dengan amalan terbaik. 3. Meningkatkan Kualiti Kod: AI mengesan masalah yang berpotensi, memberikan cadangan pengoptimuman, dan meningkatkan kualiti kod. Kaedah ini dilaksanakan melalui pembelajaran mesin dan teknologi pemprosesan bahasa semulajadi untuk membantu pemaju meningkatkan kecekapan dan kualiti kod.

Di MySQL, tambah medan menggunakan alterTabletable_nameaddcolumnnew_columnvarchar (255) afterexisting_column, memadam medan menggunakan altertabletable_namedropcolumncolumn_to_drop. Apabila menambah medan, anda perlu menentukan lokasi untuk mengoptimumkan prestasi pertanyaan dan struktur data; Sebelum memadam medan, anda perlu mengesahkan bahawa operasi itu tidak dapat dipulihkan; Mengubah struktur jadual menggunakan DDL dalam talian, data sandaran, persekitaran ujian, dan tempoh masa beban rendah adalah pengoptimuman prestasi dan amalan terbaik.

session_start () iscrucialinphpformanaginguserSessions.1) itinitiatesanewsessionifnoneexists, 2) resumeSanexistingsession, dan3) setSasessionCookieforcontinuityAcrossrequests, enableingApplicationeUseUshenticationandPersonalConizedConizedContentContentContentContentContentContentContentContentContentContentContentC.

Untuk selamat dan teliti menyahpasang MySQL dan membersihkan semua fail sisa, ikuti langkah -langkah berikut: 1. Hentikan perkhidmatan MySQL; 2. Nyahpasang pakej MySQL; 3. Fail konfigurasi bersih dan direktori data; 4. Sahkan bahawa pemotongan adalah menyeluruh.

Kaedah yang cekap untuk memasukkan data dalam MySQL termasuk: 1. Menggunakan sintaks Insertinto ... Sintaks, 2. Menggunakan perintah LoadDatainFile, 3. Menggunakan pemprosesan transaksi, 4. Laraskan saiz batch, 5. Lumpuhkan pengindeks

Fungsi MySQL boleh digunakan untuk pemprosesan dan pengiraan data. 1. Penggunaan asas termasuk pemprosesan rentetan, pengiraan tarikh dan operasi matematik. 2. Penggunaan lanjutan melibatkan menggabungkan pelbagai fungsi untuk melaksanakan operasi kompleks. 3. Pengoptimuman prestasi memerlukan mengelakkan penggunaan fungsi dalam klausa WHERE dan menggunakan GroupBy dan jadual sementara.

Memasang MySQL pada macOS boleh dicapai melalui langkah-langkah berikut: 1. Pasang homebrew, menggunakan command /bin/bash-c"$(curl-fsslhttps://raw.githubusercontent.com/homebrew/install/head/install.sh) ". 2. Kemas kini homebrew dan gunakan brewupdate. 3. Pasang MySQL dan gunakan Brewinstallmysql. 4. Mulakan perkhidmatan MySQL dan gunakan BrewServicessTartMysql. Selepas pemasangan, anda boleh menggunakan mysql-u
