Latest web development tutorials
×

PHP kuliah

PHP kuliah PHP pengantar singkat PHP memasang PHP tatabahasa PHP variabel PHP echo/print PHP Jenis Data PHP konstan PHP tali PHP operator PHP If...Else PHP Switch PHP susunan PHP Sorting array PHP superglobals PHP While sirkulasi PHP For sirkulasi PHP fungsi PHP Variabel sihir PHP Ruang nama PHP Berorientasi Objek

PHP bentuk

PHP bentuk PHP bentuk Authentication PHP bentuk - bidang yang harus diisi PHP bentuk - email verifikasi dan URL PHP contoh bentuk lengkap PHP $_GET variabel PHP $_POST variabel

PHP canggih Tutorial

PHP Array multidimensi PHP tanggal PHP berisi PHP berkas PHP Upload File PHP Cookie PHP Session PHP E-mail PHP keamanan E-mail PHP Error PHP Exception PHP filter PHP filter lanjutan PHP JSON

PHP 7 Fitur baru

PHP 7 Fitur baru

PHP database

PHP MySQL pengantar singkat PHP MySQL koneksi PHP MySQL Membuat database PHP MySQL Buat tabel data PHP MySQL memasukkan data PHP MySQL Menyisipkan beberapa data yang PHP MySQL Laporan disiapkan PHP MySQL membaca data PHP MySQL WHERE PHP MySQL ORDER BY PHP MySQL UPDATE PHP MySQL DELETE PHP ODBC

PHP XML

XML Expat Parser XML DOM XML SimpleXML

PHP & AJAX

AJAX pengantar singkat AJAX PHP AJAX database AJAX XML AJAX pencarian real-time AJAX RSS Reader AJAX suara

PHP Reference manual

PHP Array PHP Calendar PHP cURL PHP Date PHP Directory PHP Error PHP Filesystem PHP Filter PHP FTP PHP HTTP PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP PDO PHP SimpleXML PHP String PHP XML PHP Zip PHP Timezones PHP image Processing PHP RESTful

PHP PDO disiapkan laporan dan prosedur yang tersimpan

Pedoman PHP PDO Referensi Pedoman PHP PDO Referensi

Banyak database lebih matang mendukung konsep pernyataan siap.

Apa pernyataan siap? Anggap saja sebagai template dikompilasi Anda ingin menjalankan SQL, yang dapat disesuaikan dengan menggunakan parameter variabel. pernyataan siap menawarkan dua manfaat utama:

  • Query hanya resolve (atau pretreatment) sekali, tapi dapat dijalankan beberapa kali dengan parameter yang sama atau berbeda. Ketika query siap, database akan menganalisis, menyusun dan melaksanakan rencana optimasi query. Untuk query yang kompleks, proses ini memakan waktu lama, jika Anda perlu diulang berkali-kali dengan parameter yang berbeda query yang sama, maka proses akan sangat mengurangi kecepatan aplikasi. Dengan menggunakan siap menghindari pernyataan mengulangi menganalisis / kompilasi / siklus mengoptimalkan. Singkatnya, pernyataan siap menggunakan lebih sedikit sumber daya dan dengan demikian berjalan lebih cepat.
  • Memberikan parameter untuk mempersiapkan pernyataan tidak perlu menggunakan tanda kutip, pengemudi akan ditangani secara otomatis. Jika aplikasi hanya menggunakan pernyataan siap, kita dapat memastikan bahwa tidak ada SQL injection. (Namun, jika bagian lain dari query tidak melarikan diri dari masukan untuk membangun, maka masih ada risiko SQL injection).

pernyataan siap sehingga berguna bahwa mereka hanya memiliki adalah pengolahan analog ketika pengemudi tidak mendukung PDO. Hal ini memastikan bahwa terlepas dari apakah database memiliki fungsi, Anda dapat memastikan bahwa aplikasi dapat menggunakan pola akses data yang sama.

penyisipan PreparedStatements diulang

mengikuti contoh dengan menggantikan nama placeholder yang sesuai dengan nama dan nilai untuk mengeksekusi query insert

<?php
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);

// 插入一行
$name = 'one';
$value = 1;
$stmt->execute();

//  用不同的值插入另一行
$name = 'two';
$value = 2;
$stmt->execute();
?>

penyisipan PreparedStatements diulang

mengikuti contoh dengan menggantikan nama dan nilai? Placeholders untuk mengeksekusi query insert.

<?php
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (?, ?)");
$stmt->bindParam(1, $name);
$stmt->bindParam(2, $value);

// 插入一行
$name = 'one';
$value = 1;
$stmt->execute();

// 用不同的值插入另一行
$name = 'two';
$value = 2;
$stmt->execute();
?>

Dapatkan data menggunakan pernyataan siap

mengikuti contoh dalam bentuk akses kunci berbasis data sudah disediakan. masukan pengguna secara otomatis tertutup dalam tanda kutip, sehingga tidak ada risiko serangan injeksi SQL.

<?php
$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name = ?");
if ($stmt->execute(array($_GET['name']))) {
  while ($row = $stmt->fetch()) {
    print_r($row);
  }
}
?>

Jika dukungan driver database, aplikasi juga dapat mengikat input dan output parameter output parameter yang biasanya digunakan untuk mendapatkan nilai dari prosedur yang tersimpan. output parameter untuk digunakan dibandingkan parameter input menjadi sedikit lebih rumit, karena ketika mengikat parameter output, Anda harus mengetahui parameter panjang tertentu. Jika nilai untuk parameter lebih besar dari rekomendasi yang mengikat dari panjang, maka akan menghasilkan kesalahan.

Memanggil prosedur yang tersimpan dengan parameter output

<?php
$stmt = $dbh->prepare("CALL sp_returns_string(?)");
$stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000); 

// 调用存储过程
$stmt->execute();

print "procedure returned $return_value\n";
?>

Anda juga dapat menentukan baik input dan output nilai-nilai parameter, sintaks mirip dengan parameter output. Pada contoh berikut, string "hello" diteruskan ke prosedur yang tersimpan ketika kembali prosedur yang tersimpan, halo diganti dengan nilai kembali dari prosedur yang tersimpan.

Dengan input / output parameter untuk memanggil prosedur tersimpan

<?php
$stmt = $dbh->prepare("CALL sp_takes_string_returns_string(?)");
$value = 'hello';
$stmt->bindParam(1, $value, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 4000); 

// 调用存储过程
$stmt->execute();

print "procedure returned $value\n";
?>

penggunaan tidak sah dari placeholder

<?php
$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name LIKE '%?%'");
$stmt->execute(array($_GET['name']));

// 占位符必须被用在整个值的位置
$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name LIKE ?");
$stmt->execute(array("%$_GET[name]%"));
?>

Pedoman PHP PDO Referensi Pedoman PHP PDO Referensi