こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHPからCへの書き換え

以下の部分を
/*
define ('DB_FILE', 'image_tes.db');
define ('IMAGE_FILE', 'sample.gif');
$dbh = sqlite_open (DB_FILE);
if (filesize(DB_FILE) == 0)
{ sqlite_query($dbh, 'create table thread (image blob)'); }
$image = sqlite_escape_string (file_get_contents (IMAGE_FILE));
sqlite_query ($dbh, "insert into thread (image) values ('$image')");
sqlite_close ($dbh);

書き換えたのですが、

rc = sqlite3_open(image_tes.db, &db);
if( rc ){
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);
}

rc = sqlite3_exec(db, "create table thread (image blob)", callback, 0, &zErrMsg);
if( rc!=SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}

$image = sqlite_escape_string (file_get_contents (IMAGE_FILE));

rc = sqlite3_exec(db, "insert into thread (image) values ('$image')", callback, 0, &zErrMsg);
if( rc!=SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}

当然ですが、
$image = sqlite_escape_string (file_get_contents (IMAGE_FILE));

rc = sqlite3_exec(db, "insert into thread (image) values ('$image')", callback, 0, &zErrMsg);
のあたりでエラーとなります。
 c言語ではどのように書いたら
同じ内容になるのでしょうか?

いま、sqliteの関数をcのプログラムの中から直接呼び出して
使おうとしています。
 VC++2005 OS2000
で製作しています。
 blobデータが保存できれば良いのですが
苦労しています。
$image = sqlite_escape_string (file_get_contents (IMAGE_FILE));
特に、この上の部分の意味を教えていただければ
何とかなりそうです。
 よろしくお願いします。

投稿日時 - 2008-02-12 07:00:30

QNo.3767972

すぐに回答ほしいです

質問者が選んだベストアンサー

$image = sqlite_escape_string (file_get_contents (IMAGE_FILE));

file_get_contents というのはPHPの組み込み関数ではないですか?
引数で与えたパスのファイルの内容を丸ごと取得するとか言うやつ。

sqlite_escape_string は sqlite3のドキュメント見れば出てるでしょう?
想像するにSQL的に問題のあるキャラクタをエスケープするものでしょうが。

投稿日時 - 2008-02-12 09:23:10

お礼

ありがとうございます。
何とかサンプルを見つけました。
とりあえず、書き込みは出来ました。

投稿日時 - 2008-02-13 07:03:47

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問