sql >> Database teknologi >  >> RDS >> Mysql

PHP- indsættelse af binære data i mysql ved hjælp af forberedte sætninger

PHP's sha1 funktion returnerer en strengrepræsentation af et hex-nummer.

Hvad det betyder er, at hvis du udskriver det på skærmen, vil det vise et hex-nummer. Men i hukommelsen er det en masse ASCII-tegn.

Så tag hex-nummeret 1A2F . Som ASCII i hukommelsen ville det være 0x31413246 , i stedet for 0x1A2F

MySQL's normale grænseflade sender alle argumenter som strenge. Når du bruger den normale grænseflade, vil MySQL konvertere ASCII-strengen til en binær værdi.

Den nye forberedte erklæringsmetode sender alt som binært. Så din pæne værdi af "1A2F" vil nu blive sendt som 0x31413246 og indsat i kolonnen. - kilde:dev.mysql.com - Udarbejdede erklæringer

Konverter i stedet din Hex-streng ved at pakke den ind i en binær streng ved hjælp af:

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

og send derefter $binId til den MySQLi udarbejdede erklæring i stedet for $id.



  1. Når DISTINCT <> GRUPPER EFTER

  2. Opsætning af Django og PostgreSQL på to forskellige EC2-instanser

  3. MYSQLI - WHERE IN array

  4. Vil ANSI JOIN vs. ikke-ANSI JOIN-forespørgsler fungere anderledes?