本文详细分析了php使用PDO方法。分享给大家供大家参考。具体分析如下:
PDO::exec:返回的是int类型,表示影响结果的条数.
返回的是boolean型,true表示执行成功,false表示执行失败,这两个通常出现在如下代码:
$pre = $pdo->prepare($sql);
$rs1 = $pre->execute();
一般情况下可以用$rs0的值判断SQL执行成功与否,如果其值为false表示SQL执行失败,0表示没有任何更改,大于0的值表示影响了多少条记录.
但是$rs1只能返回SQL执行成功与否,如果需要获取影响的记录数需要使用$pre->rowCount();
我个人喜欢使用 MySQL,所以我的 extensions.ini 中有这二行.
extension=pdo_mysql.so
接著在程式中,代码如下:
define('DB_USER','test');
define('DB_PASSWD','test');
define('DB_HOST','localhost');
define('DB_TYPE','mysql');
$dbh = new PDO(DB_TYPE.':host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASSWD);
文中的使用常数设定是我个人的习惯,各位不用像我这么麻烦,当像上面的操作,$dbh 本身就是代表了PDO的连线了,那要怎样使用PDO呢?
第一种,懒人法 query,什么都不用想,像平常一样的使用 query 的函式,代码如下:
foreach ( $dbh->query($sql) as $value)
{
echo $value[col];
};
第二种,自动带入法 prepare,我个人使用PDO后,偏好利用 prepare 的函式来进行作动 prepare 的好处是可以先写好 SQL 码,并且在稍后自动带入我们要的资料.
这个我想最大的好处是比起直接利用 query 可以减少许多安全性的问题,首先,我们利用 prepare 进行 SQL 码的设定,在利用bindparm 来进行设定的动作,代码如下:
$sth->bindParam(':str',$str,PDO::PARAM_STR,12);
$sth->bindParam(':SN',$SN);
$sth->execute();
请注意文中的 :str 及 :SN,当我们利用 bindParam的函式,可以利用 :word 来指定系统需要套用的部份,像是我们利用:str 及 :SN 来指定,而实际的内容,就靠bindParam还可以指定我们要输入的型态。
首先我们先看 :str 的指定,:str 由於我确定资料是属於文字,因此利用 PD::PARAM_STR 来告诉程式“这个是字串哟”,并且给一个范围,也就是长度是12个位元。
我们也可以不要那么复杂,像 :SN,虽然也是用 bindParam 来指定,但是我们省略了型态及长度,PHP 会用该变数预设的型态来套用.
最后呢,就是利用 $sth->execute(); 来进行执行的动作,基本上不难,甚至可以说很简单呢.
如果你有大量需要重复套用的资料,你就可以拼了命的重新利用 bindParam 来指定,比如我的:str 及 :SN 如果有十笔资料,我也可以这样子直接新增到资料库,代码如下:
foreach ($array => $value )
{
$sth->bindParam(':str',$value[str],PDO::PARAM_STR,12);
$sth->bindParam(':SN',$value[SN]);
$sth->execute();
}
甚至强者如我朋友,把所有可能的 SQL 全写在一个档案后面,后来的过程SQL的部份就变成全用变数带进去了,反正资料可以用现成的方式套用嘛.
那,如果利用 prepare 的方式来 select,关键字当然也可以像上面的方式利用:word 来指定,代码如下:
$sth->bindParam(':SN',$value[SN]);
$sth->execute();
while($meta = $sth->fetch(PDO::FETCH_ASSOC))
{
echo $meta["name"];
}
这样新出现的是 fetch,跟mysql_fetch_row() 的意思差不多,但是在 fetch() 中我们发现多了一个 PDO::FETCH_ASSOC 这个东西.
fetch() 提供了许多获取资料的方式,而 PDO::FETCH_ASSOC 指的就是传回下一笔资料的栏位名及值啦
比如上例,利用 $meta 来取得 fetch 传回的资料,此时 $meta 的元素名称就是资料库的栏位名称,而内容当然就是值本身这个跟你利用 mysql_fetch_row() 时不一样,因为除了栏位名称,mysql_fetch_row() 还会依照顺利将元素名称除了栏位外在多给予一个以序号的方式为基础的元素,那难道 PDO 没有吗?
当然有,只要将 PDO::FETCH_ASSOC 改为 PDO::FETCH_BOTH,那用法就跟 mysql_fetch_row() 没什么两样了.
如何除错
除错是所有程式设计师中心中永远的痛,我们使用 PDO 要如何除错呢?
其实 PDO 已经提供了二个非常方便的函式 errorInfo() 及 errorCode()
用法也是世界简单,每当我们利用 execute() 执行后,如果有错误,那 errorInfo() 及 errorCode() 中就会有内容,我们就可以这样子做,代码如下:
$sth->bindParam(':SN',$value[SN]);
$sth->execute();
if ($sth->errorCode())
{
echo "有错误!有错误!";
print_r($sth->errorInfo());
}
而 $sth->errorInfo() 会是一个阵列,这个阵列有三个值:
0 为SQLSTATE error code
1 为你所使用的 Driver 所传回的错误码
2 为你所使用的 Driver 所传回的错误讯息
希望本文所述对大家的php程序设计有所帮助。

Untuk melindungi permohonan dari serangan XSS yang berkaitan dengan sesi, langkah-langkah berikut diperlukan: 1. Tetapkan bendera httponly dan selamat untuk melindungi kuki sesi. 2. Kod eksport untuk semua input pengguna. 3. Melaksanakan Dasar Keselamatan Kandungan (CSP) untuk mengehadkan sumber skrip. Melalui dasar-dasar ini, serangan XSS yang berkaitan dengan sesi dapat dilindungi dengan berkesan dan data pengguna dapat dipastikan.

Kaedah untuk mengoptimumkan prestasi sesi PHP termasuk: 1. Mula sesi kelewatan, 2. Gunakan pangkalan data untuk menyimpan sesi, 3. Data sesi kompres, 4. Mengurus kitaran hayat sesi, dan 5. Melaksanakan perkongsian sesi. Strategi ini dapat meningkatkan kecekapan aplikasi dalam persekitaran konkurensi yang tinggi.

Thesession.gc_maxlifetimesettinginphpdeterminesthelifespanofsessiondata, setInseconds.1) it'sconfiguredinphp.iniorviaini_set (). 2) abalanceisneededtoavoidperformanceissuesandunexpectedlogouts.3) php'sgarbageCollectionisprobabilistic, influedbygc_probabi

Dalam PHP, anda boleh menggunakan fungsi session_name () untuk mengkonfigurasi nama sesi. Langkah -langkah tertentu adalah seperti berikut: 1. Gunakan fungsi session_name () untuk menetapkan nama sesi, seperti session_name ("my_session"). 2. Selepas menetapkan nama sesi, hubungi session_start () untuk memulakan sesi. Mengkonfigurasi nama sesi boleh mengelakkan konflik data sesi antara pelbagai aplikasi dan meningkatkan keselamatan, tetapi memberi perhatian kepada keunikan, keselamatan, panjang dan penetapan masa sesi.

ID sesi hendaklah dijadikan semula secara teratur pada log masuk, sebelum operasi sensitif, dan setiap 30 minit. 1. Meningkatkan semula ID Sesi semasa log masuk untuk mengelakkan serangan tetap sesi. 2. Regenerate sebelum operasi sensitif untuk meningkatkan keselamatan. 3. Penjanaan semula secara berkala mengurangkan risiko penggunaan jangka panjang, tetapi pengalaman pengguna perlu ditimbang.

Menetapkan Parameter Cookie Sesi di PHP boleh dicapai melalui fungsi session_set_cookie_params (). 1) Gunakan fungsi ini untuk menetapkan parameter, seperti masa tamat, laluan, nama domain, bendera keselamatan, dan lain -lain; 2) hubungi session_start () untuk membuat parameter berkuatkuasa; 3) menyesuaikan parameter secara dinamik mengikut keperluan, seperti status log masuk pengguna; 4) Perhatikan untuk menetapkan bendera selamat dan httponly untuk meningkatkan keselamatan.

Tujuan utama menggunakan sesi dalam PHP adalah untuk mengekalkan status pengguna antara halaman yang berbeza. 1) Sesi dimulakan melalui fungsi session_start (), mewujudkan ID sesi yang unik dan menyimpannya dalam cookie pengguna. 2) Data sesi disimpan di pelayan, yang membolehkan data diluluskan antara permintaan yang berbeza, seperti status log masuk dan kandungan keranjang belanja.

Bagaimana untuk berkongsi sesi antara subdomain? Dilaksanakan dengan menetapkan kuki sesi untuk nama domain biasa. 1. Tetapkan domain cookie sesi ke .example.com di sebelah pelayan. 2. Pilih kaedah penyimpanan sesi yang sesuai, seperti memori, pangkalan data atau cache yang diedarkan. 3. Lulus ID Sesi melalui kuki, dan pelayan mengambil semula dan mengemas kini data sesi berdasarkan ID.


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

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna