Mysql
 sql >> Database >  >> RDS >> Mysql

PHP:inserimento di dati binari in mysql utilizzando istruzioni preparate

sha1 di PHP la funzione restituisce una rappresentazione di stringa di un numero esadecimale.

Ciò significa che se lo stampi sullo schermo, verrà visualizzato un numero esadecimale. Ma in memoria, è un mucchio di caratteri ASCII.

Quindi, prendi il numero esadecimale 1A2F . Come ASCII in memoria sarebbe 0x31413246 , invece di 0x1A2F

La normale interfaccia di MySQL invia tutti gli argomenti come stringhe. Quando si utilizza l'interfaccia normale, MySQL convertirà la stringa ASCII in un valore binario.

Il nuovo metodo di istruzione preparato invia tutto come binario. Quindi il tuo bel valore di "1A2F" verrà ora inviato come 0x31413246 e inserito nella colonna. - fonte:dev.mysql.com - Dichiarazioni preparate

Invece, converti la tua stringa esadecimale comprimendola in una stringa binaria usando:

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

e poi passa $binId all'istruzione MySQLi preparata invece di $id.