ให้เรตสมาชิก: 5 / 5

ดาวใช้งานดาวใช้งานดาวใช้งานดาวใช้งานดาวใช้งาน
 

ฟังก์ชัน sqlite_udf_encode_binary()

 

ความหมายของฟังก์ชันและการใช้งาน

การเข้ารหัสข้อมูลไบนารี ก่อนส่งคืนจาก UDF ด้วยฟังก์ชัน sqlite_udf_encode_binary()

 

รูปแบบการเขียน (Syntax)

- PHP จะไม่ดำเนินการเข้ารหัส หรือถอดรหัสอัตโนมัติเนื่องจากจะส่งผลต่อประสิทธิภาพการทำงาน

string sqlite_udf_encode_binary ( string $data )

 

ตัวอย่าง

I wrote a script to transfer my old data from a mysql database, performing some changes to a sqlite3 database. When I realized that that the sqlite interfaces is no longer included in PHP and my PECL didn't get it installed it was too late. 

However, there is a very easy, though not particularly performant way to get the job done like in the "sqlite_encode_blob" function I present below. Note that this does ONLY encode the data. To actually use it in a query you will have to wrap it like: X'data' See the example below.

#!/usr/bin/php
<?php
function sqlite_encode_blob($data) {
        $result = "";
        for ($i = 0; $i < strlen($data); $i++) {
                $result .= sprintf("%02X", ord(substr($data, $i, 1)));
        }
        return $result;
}

error_reporting(E_ALL);
$original = "62.jpg";
$data = file_get_contents($original);
$before = microtime(true);
$encodedData = sqlite_encode_blob($data);
$after = microtime(true);
unset($data);
echo "Encoding time needed: ".($after - $before)." seconds.\n";

$sql = <<<QUERY
BEGIN;
CREATE TABLE test(test BLOB);
INSERT INTO test(test) VALUES ( X'$encodedData' );
COMMIT;
QUERY;
unset($encodedData);

file_put_contents("test.sql", $sql);
`sqlite3 blob_test.db < test.sql`
?>

The tricky part is to get the data back out of the database - that is not possible with the command line tool as far as I can tell. You will have to use a language with an actual API.

The following example is written in C and compiles on a linux box where the sqlite3 API is installed using:
gcc -o test test.c `pkg-config --cflags --libs sqlite3`
Note that this has absolutely no error checking whatsoever. If the slightest thing goes wrong it will likely cause a segmentation fault and likely leave the database corrupted.

# FILE test.c START
#include <stdlib.h>
#include <stdio.h>
#include <sqlite3.h>
#define DB_FILE "blob_test.db"
#define QUERY_STRING "SELECT data FROM test"
#define STORAGE_FILE "test.jpg"

int main(int argc, char** argv) {
        sqlite3 *db = NULL;
        int size = 0;
        const char *data = NULL;
        sqlite3_stmt *query = NULL;
        const char *rest = NULL;
        FILE *file = NULL;
        sqlite3_open(DB_FILE, &db);
        sqlite3_prepare_v2(db, QUERY_STRING, sizeof(QUERY_STRING), &query, &rest);
        sqlite3_step(query);
        size = sqlite3_column_bytes(query, 0);
        data = sqlite3_column_blob(query, 0);
        file = fopen(STORAGE_FILE, "w");
        fwrite(data, 1, size, file);
        fclose(file);
        sqlite3_finalize(query);
        sqlite3_close(db);
        return 0;
}

# FILE test.c END

 

 

 

<< PHP Functions 

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
การเข้าใช้งานสำหรับลูกค้าเพื่อซื้อห้องพักหรือขายห้องพัก อโกด้า
โดย milk2533 พ 25 พ.ย. 2020 6:43 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
3
พ 25 พ.ย. 2020 6:43 pm โดย milk2533
อุปโภค กับ บริโภค ต่างกันอย่างไร
โดย milk2533 พ 25 พ.ย. 2020 6:09 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
3
พ 25 พ.ย. 2020 6:09 pm โดย milk2533
Lot ผลิต และ วันหมดอายุ สินค้า ดูอย่างไร
โดย milk2533 พ 25 พ.ย. 2020 5:48 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
11
พ 25 พ.ย. 2020 5:48 pm โดย milk2533
ขนส่งสาธารณะ คืออะไร
โดย milk2533 พ 25 พ.ย. 2020 5:26 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
7
พ 25 พ.ย. 2020 5:26 pm โดย milk2533
ใบเสร็จน้ำมันรถที่สามารถนำมาใช้ค่าใช้จ่ายได้ สังเกตอย่างไร
โดย milk2533 พ 25 พ.ย. 2020 4:57 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
6
พ 25 พ.ย. 2020 4:57 pm โดย milk2533
อัพเดทความปลอดภัย 7 จุด!!! ใน Joomla เวอร์ชั่นใหม่ 3.9.23
โดย tsukasaz พ 25 พ.ย. 2020 11:36 am บอร์ด MindPHP News & Feedback
1
32
พ 25 พ.ย. 2020 12:46 pm โดย prmindphp
แนะนำหนังสือ Pre-Order PHP - high-performance ด้วย Swoole
โดย mindphp อ 24 พ.ย. 2020 4:47 pm บอร์ด Programming - PHP
0
15
อ 24 พ.ย. 2020 4:47 pm โดย mindphp
จ่ายเงินสมทบประกันสังคม มาตรา 33 , 39 อย่างไร
โดย milk2533 อ 24 พ.ย. 2020 3:08 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
14
อ 24 พ.ย. 2020 3:08 pm โดย milk2533