PHPのsha1
関数は、16進数の文字列表現を返します。
つまり、画面に印刷すると、16進数が表示されます。しかし、メモリ内では、ASCII文字の集まりです。
したがって、16進数の1A2F
を使用します。 。 0x31413246
になるメモリ内のASCIIとして 、0x1A2F
の代わりに
MySQLの通常のインターフェースは、すべての引数を文字列として送信します。通常のインターフェースを使用する場合、MySQLはASCII文字列をバイナリ値に変換します。
新しいプリペアドステートメントメソッドは、すべてをバイナリとして送信します。したがって、「1A2F」の適切な値が0x31413246として送信され、列に挿入されます。 -出典:dev.mysql.com-準備されたステートメント
代わりに、次を使用して16進文字列をバイナリ文字列にパックして変換します。
$binId = pack("H*", $id); // this string is not ASCII, don't print it to the screen! That will be ugly.
次に、$binId
を渡します $idの代わりにMySQLiプリペアドステートメントに。