ให้เรตสมาชิก: 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 

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
ประกาศปิดหมวด ยกเลิกอัพเดดเนื้อหา และ งดตอบคำถามต่างๆ เกี่ยวกับ Magento
โดย mindphp ส 14 ก.ย. 2019 5:31 pm บอร์ด Magento user Guide Knowledge
0
15
ส 14 ก.ย. 2019 5:31 pm โดย mindphp
แนะนำ และสอนการใช้งาน Google Chrome Remote Desktop โปรแกรมรีโหมทหน้าจอ
โดย zend_framework ส 14 ก.ย. 2019 5:28 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
14
ส 14 ก.ย. 2019 5:28 pm โดย zend_framework
อยากทราบวิธีสร้างรูปภาพในไลน์กลุ่มแล้ว กดที่รูปเด้งเข้าไลน์@ของเราเอง
โดย Anonymous ส 14 ก.ย. 2019 4:38 pm บอร์ด Mobile Programming - Android, iOS, Window Phone
1
23
ส 14 ก.ย. 2019 4:52 pm โดย mindphp
อยากทราบวิธีที่จะให้ อาเรย์วนลูปอย่างไรครับ
โดย Patipat ส 14 ก.ย. 2019 3:46 pm บอร์ด Joomla Development
3
30
ส 14 ก.ย. 2019 5:25 pm โดย mindphp
สร้างแถบเมนู
โดย alonglot ส 14 ก.ย. 2019 12:35 pm บอร์ด Joomla Development
0
13
ส 14 ก.ย. 2019 12:35 pm โดย alonglot
งานประจำวันที่ 14 กันยายน 2562
โดย Patipat ส 14 ก.ย. 2019 10:39 am บอร์ด M088 - ปฏิภัทร สารธรรม
1
6
ส 14 ก.ย. 2019 7:03 pm โดย Patipat
งานประจำวันที่ 14 กันยายน 2562
โดย aninthana ส 14 ก.ย. 2019 10:22 am บอร์ด M092 - อนินธนา บุญยัง
2
12
ส 14 ก.ย. 2019 8:39 pm โดย thatsawan
งานประจำวันที่ 14 กันยายน 2562
โดย jamepiyawat ส 14 ก.ย. 2019 10:05 am บอร์ด M084 - นายปิยวัช เชาว์วิมล
1
4
ส 14 ก.ย. 2019 7:05 pm โดย jamepiyawat
งาน RML Purchase Requisition (PR)&APPLICATION FORM
โดย chatee supasand ศ 13 ก.ย. 2019 7:45 pm บอร์ด MT33 - นายชาตรี สุภาแสน
0
2
ศ 13 ก.ย. 2019 7:45 pm โดย chatee supasand
google photos เพิ่มฟีเจอร์ Memories นำภาพถ่ายหรือวิดีโอเก่า ๆ ของเรามาแสดง
โดย jamepiyawat ศ 13 ก.ย. 2019 6:08 pm บอร์ด Share Knowledge
0
15
ศ 13 ก.ย. 2019 6:08 pm โดย jamepiyawat
Microsoft เปลี่ยนชื่อ Microsoft To-Do เป็น To Do หวังให้ใช้งานแทน Wunderlis
โดย chatee supasand ศ 13 ก.ย. 2019 6:05 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
14
ศ 13 ก.ย. 2019 6:05 pm โดย chatee supasand
วิธีการ Export ข้อมูลมาเป็นไฟล์ Excel โดย phpbb
โดย Ittichai_chupol ศ 13 ก.ย. 2019 4:24 pm บอร์ด PHP Knowledge
0
18
ศ 13 ก.ย. 2019 4:24 pm โดย Ittichai_chupol
ข้อแตกต่างระหว่างสัญญาเช่าทางการเงินกับสัญญาเช่าดำเนินงาน
โดย EyePornnipa ศ 13 ก.ย. 2019 4:23 pm บอร์ด M089 - นางสาวพรนิภา ราชธานี
0
4
ศ 13 ก.ย. 2019 4:23 pm โดย EyePornnipa
อยากทราบวิธีการแก้ไข Undefined index ใน phpbb
โดย Ittichai_chupol ศ 13 ก.ย. 2019 3:26 pm บอร์ด Programming - PHP
1
31
ศ 13 ก.ย. 2019 3:36 pm โดย บุคคลทั่วไป
สินทรัพย์ถาวร (Fixed Assets) คือ
โดย EyePornnipa ศ 13 ก.ย. 2019 2:54 pm บอร์ด M089 - นางสาวพรนิภา ราชธานี
0
7
ศ 13 ก.ย. 2019 2:54 pm โดย EyePornnipa
อยากทราบวิธีทำให้ path way มีลูกศรชี ครับ
โดย jamepiyawat ศ 13 ก.ย. 2019 2:53 pm บอร์ด Joomla Development
1
27
ศ 13 ก.ย. 2019 2:55 pm โดย tsukasaz
R - ปรับ URL สำหรับ โหลดไฟล์ Joomla Core มาไว้ที่ jupdate.mindphp.com
โดย mindphp ศ 13 ก.ย. 2019 12:15 pm บอร์ด MDUpgrade
0
1
ศ 13 ก.ย. 2019 12:15 pm โดย mindphp
B - Allowed memory size of 134217728 bytes exhausted
โดย mindphp ศ 13 ก.ย. 2019 12:08 pm บอร์ด MDUpgrade
2
2
ศ 13 ก.ย. 2019 12:30 pm โดย mindphp
สอบถามครับ RML สร้างเส้นตาราง แบบนี้ยังไงอะครับ
โดย chatee supasand ศ 13 ก.ย. 2019 10:28 am บอร์ด Programming - C/C++ & java & Python
2
45
ศ 13 ก.ย. 2019 11:03 am โดย chatee supasand
งานประจำวันที่ 13 กันยายน 2562
โดย aninthana ศ 13 ก.ย. 2019 9:36 am บอร์ด M092 - อนินธนา บุญยัง
1
10
ศ 13 ก.ย. 2019 6:00 pm โดย aninthana