sql >> Database >  >> RDS >> Mysql

PHP - binaire gegevens invoegen in mysql met behulp van voorbereide instructies

PHP's sha1 functie retourneert een tekenreeksrepresentatie van een hexadecimaal getal.

Wat dat betekent is dat als je het op het scherm afdrukt, het een hexadecimaal getal zal weergeven. Maar in het geheugen zijn het een heleboel ASCII-tekens.

Neem dus het hexadecimale getal 1A2F . Als ASCII in het geheugen is dat 0x31413246 , in plaats van 0x1A2F

De normale interface van MySQL stuurt alle argumenten als strings. Bij gebruik van de normale interface zal MySQL de ASCII-string converteren naar een binaire waarde.

De nieuwe voorbereide verklaringsmethode verzendt alles als binair. Dus je mooie waarde van "1A2F" wordt nu verzonden als 0x31413246 en ingevoegd in de kolom. - bron:dev.mysql.com - Opgemaakte verklaringen

Converteer in plaats daarvan uw Hex-tekenreeks door deze in een binaire reeks te verpakken met:

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

en geef dan $binId . door naar de door MySQLi voorbereide verklaring in plaats van $id.



  1. Wat is de beste manier om een ​​Django DB van SQLite naar MySQL te migreren?

  2. Datums vergelijken die zijn opgeslagen als varchar

  3. Zal het verplaatsen van gegevens van EBS naar tijdelijke opslag de prestaties van MySQL-query's verbeteren?

  4. Wat gebruikt LISTAGG met ORDER BY NULL eigenlijk als bestelcriterium?