sql >> Databasteknik >  >> RDS >> Mysql

PHP- infoga binär data i mysql med hjälp av förberedda satser

PHPs sha1 funktion returnerar en strängrepresentation av ett hexadecimalt tal.

Vad det betyder är att om du skriver ut det på skärmen kommer det att visa ett hexadecimalt nummer. Men i minnet är det ett gäng ASCII-tecken.

Så ta det hexadecimala numret 1A2F . Som ASCII i minnet skulle det vara 0x31413246 , istället för 0x1A2F

MySQL:s normala gränssnitt skickar alla argument som strängar. När du använder det normala gränssnittet kommer MySQL att konvertera ASCII-strängen till ett binärt värde.

Den nya förberedda satsmetoden skickar allt som binärt. Så ditt fina värde på "1A2F" kommer nu att skickas som 0x31413246 och infogas i kolumnen. - källa:dev.mysql.com - Förberedda uttalanden

Konvertera istället din Hex-sträng genom att packa den till en binär sträng med:

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

och skicka sedan $binId till det MySQLi-förberedda uttalandet istället för $id.



  1. Användarhänvisningssystem som använder PHP och MySQL

  2. Hitta icke-numeriska värden i en kolumn i SQL Server

  3. Att behålla data plus indexdata i minnet - InnoDB vs. MyISAM

  4. Steg för steg R12.2.6 EBS-installation på Virtual Box