PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

cara menyimpan objek serial dengan namespace di database menggunakan pdo php

Ada beberapa hal yang salah di sini, tetapi yang terbesar adalah Anda tidak menggunakan parameter kueri.

Jangan gunakan addslashes . Jika Anda menemukan diri Anda menggunakan itu, Anda harus berpikir "oops, saya harus memperbaiki kueri jadi saya menggunakan parameter sebagai gantinya".

Dalam hal ini, Anda harus menulis sesuatu seperti:

$sth = $pdo->prepare('SELECT replace_value(?, ?, ?)');
$sth->execute(array('protect\classes\Router', $tmp, 'serialized_classes'));

Anda belum menyebutkan tipe data dari argumen yang Anda berikan kepada data serial. Di atas hanya akan berfungsi jika text atau varchar atau serupa.

Jika bytea seperti seharusnya untuk data objek serial, Anda harus memberi tahu PHP bahwa parameternya adalah bidang biner:

$sth = $pdo->prepare('SELECT replace_value(:router, :serialbytes, :mode)');
$sth->bindParam(':router', 'protect\classes\Router');
$sth->bindParam(':mode', 'serialized_classes');
$sth->bindParam(':serialbytes', $tmp, PDO::PARAM_LOB);
$sth->execute();

Perhatikan penggunaan PDO::PARAM_LOB untuk memberi tahu PDO bahwa $tmp berisi data biner untuk diteruskan ke PostgreSQL sebagai bytea .

(Tidak apa-apa untuk menempatkan konstanta seperti 'protect\classes\Router' langsung ke kueri Anda, btw, selama Anda membaginya menjadi params jika mereka pernah menjadi variabel. Saya kebanyakan memisahkannya karena saya merasa lebih mudah dibaca dalam kueri seperti ini.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesalahan otentikasi kata sandi gagal saat menjalankan migrasi laravel

  2. PSQLException:ResultSet tidak diposisikan dengan benar, mungkin Anda perlu menelepon berikutnya

  3. PostgreSQL/JDBC dan TIMESTAMP vs. TIMESTAMPTZ

  4. regexp_split_to_table dan row_number

  5. Cara menggunakan postgresql apa saja dengan data jsonb