Mysql
 sql >> база данни >  >> RDS >> Mysql

PHP- вмъкване на двоични данни в mysql с помощта на подготвени оператори

sha1 на PHP функцията връща низово представяне на шестнадесетичен номер.

Това означава, че ако го отпечатате на екран, той ще покаже шестнадесетичен номер. Но в паметта това е куп ASCII символи.

И така, вземете шестнадесетичния номер 1A2F . Като ASCII в паметта, това би било 0x31413246 , вместо 0x1A2F

Нормалният интерфейс на MySQL изпраща всички аргументи като низове. Когато използвате нормалния интерфейс, MySQL ще преобразува ASCII низа в двоична стойност.

Новият метод на подготвени изявления изпраща всичко като двоично. Така че вашата хубава стойност на "1A2F" вече ще бъде изпратена като 0x31413246 и вмъкната в колоната. - източник:dev.mysql.com - Подготвени изявления

Вместо това преобразувайте своя шестнадесетичен низ, като го опаковате в двоичен низ с помощта на:

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

и след това предайте $binId към подготвеното изявление за MySQLi вместо $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. Как да се уверите, че няма състояние на състезание в базата данни на MySQL, когато увеличавате поле?

  2. Laravel:Как да съхранявам данни във формат json в база данни?

  3. Използване на Python3 mysqlclient-1.3.6 (известен още като PyMySQL)?

  4. Python pandas to_sql 'append'

  5. Какво означава SQL клауза GROUP BY 1?