Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PHP - Einfügen von Binärdaten in MySQL mit vorbereiteten Anweisungen

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.