sha1
von PHP Funktion gibt eine Stringdarstellung einer Hexadezimalzahl zurück.
Das bedeutet, dass beim Drucken auf dem Bildschirm eine Hexadezimalzahl angezeigt wird. Aber im Speicher ist es ein Haufen ASCII-Zeichen.
Nehmen Sie also die Hexadezimalzahl 1A2F
. Als ASCII im Speicher wäre das 0x31413246
, statt 0x1A2F
Die normale Schnittstelle von MySQL sendet alle Argumente als Strings. Bei Verwendung der normalen Schnittstelle konvertiert MySQL den ASCII-String in einen Binärwert.
Die neue Methode der vorbereiteten Anweisung sendet alles als Binärdatei. Ihr netter Wert von "1A2F" wird also jetzt als 0x31413246 gesendet und in die Spalte eingefügt. - Quelle:dev.mysql.com - Vorbereitete Erklärungen
Konvertieren Sie stattdessen Ihren Hex-String, indem Sie ihn mit:
in einen binären String packen$binId = pack("H*", $id); // this string is not ASCII, don't print it to the screen! That will be ugly.
und übergeben Sie dann $binId
zur vorbereiteten MySQLi-Anweisung anstelle von $id.