Mysql
 sql >> Baza danych >  >> RDS >> Mysql

PHP- wstawianie danych binarnych w mysql za pomocą przygotowanych instrukcji

sha1 PHP funkcja zwraca ciąg reprezentujący liczbę szesnastkową.

Oznacza to, że jeśli wydrukujesz to na ekranie, wyświetli liczbę szesnastkową. Ale w pamięci jest to garść znaków ASCII.

Więc weź liczbę szesnastkową 1A2F . Jako ASCII w pamięci, czyli 0x31413246 , zamiast 0x1A2F

Zwykły interfejs MySQL wysyła wszystkie argumenty jako ciągi. Używając normalnego interfejsu, MySQL przekonwertuje ciąg ASCII na wartość binarną.

Nowa metoda przygotowanych instrukcji wysyła wszystko jako binarne. Więc twoja ładna wartość "1A2F" zostanie teraz wysłana jako 0x31413246 i wstawiona do kolumny. - źródło:dev.mysql.com - Przygotowane oświadczenia

Zamiast tego przekonwertuj swój ciąg szesnastkowy, pakując go do ciągu binarnego za pomocą:

$binId = pack("H*", $id); // this string is not ASCII, don't print it to the screen! That will be ugly.

a następnie przekaż $binId do przygotowanej instrukcji MySQLi zamiast $id.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wysyłanie haseł przez Internet

  2. gem mysql2 skompilowany dla niewłaściwej biblioteki klienta mysql

  3. Śledzenie powiadomień na Facebooku (DB Design)

  4. Lista specyfikatorów formatu daty w MySQL

  5. MySQL CURRENT_TIMESTAMP jako DEFAULT