sha1
PHP funkce vrací řetězcovou reprezentaci hexadecimálního čísla.
To znamená, že pokud jej vytisknete na obrazovku, zobrazí se hexadecimální číslo. Ale v paměti je to hromada ASCII znaků.
Vezměte tedy hexadecimální číslo 1A2F
. Jako ASCII v paměti by to bylo 0x31413246
, namísto 0x1A2F
Normální rozhraní MySQL posílá všechny argumenty jako řetězce. Při použití normálního rozhraní převede MySQL řetězec ASCII na binární hodnotu.
Nová metoda připraveného výpisu odesílá vše jako binární. Takže vaše pěkná hodnota "1A2F" bude nyní odeslána jako 0x31413246 a vložena do sloupce. - zdroj:dev.mysql.com - Připravené výpisy
Místo toho převeďte svůj hexadecimální řetězec jeho zabalením do binárního řetězce pomocí:
$binId = pack("H*", $id); // this string is not ASCII, don't print it to the screen! That will be ugly.
a poté předejte $binId
na připravený příkaz MySQLi namísto $id.