Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

tanda kutip tunggal dalam SQL Query

mysql_real_escape_string() dan suntikan sql telah disebutkan.
Tapi sekarang skrip Anda (dengan susah payah) harus mencampur pernyataan sql dengan data/parameter dan pada langkah selanjutnya server MySQL harus memisahkan data dari pernyataan.
Menggunakan (sisi server) pernyataan yang disiapkan kedua "bagian" dari kueri Anda dikirim secara terpisah dan parser sql (dari server MySQL Anda) tidak akan pernah "bingung" tentang di mana pernyataan berakhir dan data dimulai.

php-mysql modul tidak mengetahui pernyataan yang disiapkan tetapi php-mysqli dan PDO lakukan.

$pdo = new PDO('mysql:host=localhost;dbname=test', '...', '...'); 
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

$stmt = $pdo->prepare('
  UPDATE
    Videos
  SET
    Title=:title ,
    Preacher=:preacher ,
    Date=:date ,
    Service=:service ,
    File=:file ,
    Description=:description
  WHERE
    id=:id
');
$stmt->bindParam(':title', $_POST['title']);
$stmt->bindParam(':preacher', $_POST['preacher']);
$stmt->bindParam(':date', $_POST['date']);
$stmt->bindParam(':service', $_POST['service']);
$stmt->bindParam(':file', $_POST['file']);
$stmt->bindParam(':description', $_POST['description']);
$stmt->bindParam(':id', $_GET['id']); // really _GET?
$stmt->execute();

Mungkin tampak banyak mengasapi jika Anda menggunakan $stmt hanya untuk satu operasi. Tetapi pertimbangkan bahwa jika tidak, Anda harus memanggil mysql_real_escape_string() untuk setiap parameter.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah tampilan MySQL selalu melakukan pemindaian tabel penuh?

  2. Kueri gabungan tanpa GROUP BY

  3. C# Terlalu banyak koneksi di MySQL

  4. Kesalahan PHP:Panggil ke fungsi anggota rowCount() pada non-objek

  5. Kapan harus mempertimbangkan Solr