Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

PHP- inserindo dados binários no mysql usando instruções preparadas


sha1 do PHP A função retorna uma representação de string de um número hexadecimal.

O que isso significa é que, se você imprimi-lo na tela, ele exibirá um número hexadecimal. Mas na memória, é um monte de caracteres ASCII.

Então, pegue o número hexadecimal 1A2F . Como ASCII na memória que seria 0x31413246 , em vez de 0x1A2F

A interface normal do MySQL envia todos os argumentos como strings. Ao usar a interface normal, o MySQL converterá a string ASCII em um valor binário.

O novo método de instrução preparado envia tudo como binário. Portanto, seu bom valor de "1A2F" agora será enviado como 0x31413246 e inserido na coluna. - fonte:dev.mysql.com - Declarações preparadas

Em vez disso, converta sua string Hex compactando-a em uma string binária usando:
$binId = pack("H*", $id); // this string is not ASCII, don't print it to the screen! That will be ugly.

e então passe $binId para a instrução preparada do MySQLi em vez de $id.