sql >> データベース >  >> RDS >> Mysql

PHP-プリペアドステートメントを使用してmysqlにバイナリデータを挿入する

    PHPのsha1 関数は、16進数の文字列表現を返します。

    つまり、画面に印刷すると、16進数が表示されます。しかし、メモリ内では、ASCII文字の集まりです。

    したがって、16進数の1A2Fを使用します。 。 0x31413246になるメモリ内のASCIIとして 、0x1A2Fの代わりに

    MySQLの通常のインターフェースは、すべての引数を文字列として送信します。通常のインターフェースを使用する場合、MySQLはASCII文字列をバイナリ値に変換します。

    新しいプリペアドステートメントメソッドは、すべてをバイナリとして送信します。したがって、「1A2F」の適切な値が0x31413246として送信され、列に挿入されます。 -出典:dev.mysql.com-準備されたステートメント

    代わりに、次を使用して16進文字列をバイナリ文字列にパックして変換します。

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

    次に、$binIdを渡します $idの代わりにMySQLiプリペアドステートメントに。



    1. php-ユーザーがお気に入りの投稿を行えるようにする

    2. MySQLを使用した異なるフィールドでの複数のGROUP_CONCAT

    3. SQL Server:DELETEとTRUNCATE

    4. Oracle10gでテーブル列の名前を変更する方法