2012-07-01から1ヶ月間の記事一覧

(SQLite3, MySQL, PHP) 小数点以下は切り上げて整数にしたい

たとえば、あるフィールドの値をすべて2分の1にする場合。 MySQLでは"CEIL()"が使えるので簡単です。 (MySQL) UPDATE tbl SET hoge = CEIL(hoge / 2); しかし、SQLiteでは"CEIL()"を使えません。 上のSQLをPHPで実行すると、下記のような警告が…。 Warning: …

(CakePHP, ロリポップ) $this->referer() が正常に動作しない

(CakePHP 2.2.1) コントローラ内でリファラを取得します。 $url = $this->referer();普通なら『http://hoge.jp/controller/view』のようなURLが入るのですが、ロリポップではなぜか『hoge.jp』となり、まったく使い物になりません。 Cakeのソースから原因を…

(正規表現, PHP, JavaScript) MySQLの改行文字(\n)を、SQLite用に置換したい

たとえば、下記のようなMySQL用のSQLがあるとします。 (MySQL) INSERT INTO tbl VALUES('aaa\naaa', 'bbb\n\nbbb', 'ccc\\nccc', '\\\nddd\nddd');(\n)は、PHPなどでデータを取得した際、改行として扱われます。 しかし、これをそのままSQLiteで使うことはで…

(正規表現, PHP, JavaScript) SQLの区切り文字として使われているバッククオートだけを置換したい

MySQL用のSQLをSQLite用に変換する際に必要な処理です。 (変換前) INSERT INTO `tbl` (`id`, `name`, `explain`) VALUES (1, 'aaa\'\'置換したくないバッククオート→`', '置換したくないバッククオート→`aaaaaa\\'); (変換後) INSERT INTO "tbl" ("id", "nam…

(正規表現, PHP, JavaScript)ある囲み記号で囲まれた文字列を抜き出す。ただし、エスケープされた囲み記号にも対処する。

最終更新: 2012-07-20 17:46 例えば、下記のようにクオート(')で囲まれた文字列を取り出したい場合。 (検索したい文字列) 'aaa' 'bbb' 'ccc'とりあえず、単純に。 (PHP) $str = "'aaa' 'bbb' 'ccc'"; preg_match_all('/\'([^\']*)\'/us', $str, $matches); v…

(PHP) 大容量のファイルを、ブラウザが落ちないように何度かに分けて処理する

以前、MySQLをSQLiteへ変換するプログラムを作りました。 http://d.hatena.ne.jp/sutara_lumpur/20120714/1342269933 が、たった数MBのSQLファイルでも、変換中にブラウザが落ちてしまうことがあります。 "fgets"で1行ずつ処理しているのですが…(-_-;) そこ…

(CakePHP2.2.1 + SQLite3) 生のSQLを実行する際の注意点

最終更新:2012-08-24 原因はいまだ判明しませんが、汎用的な対処法を見つけました。 下記のように"query()"を使って生のSQLを実行する場合。 (コントローラ) $data = $this->User->query('SELECT * FROM "users" LIMIT 10');"*(アスタリスク)"が問題になって…

(CakePHP,PHP,SQLite3,MySQL) SQLで"%"や"_"をエスケープしたい

SQLでワイルドカードとして扱われる"%(パーセント)"や"_(アンダーバー)"そのものを検索したい場合、自前でエスケープしなければなりません。 CakePHPと素のPHPそれぞれでMySQLとSQLite3からデータを検索する場合を考えてみます。 基本的には 自前で"%"や"_"…

PHPでSQLite3を使う

PHP 5.3.0以降なら、特別な設定をしなくてもすぐにSQLite3を使えるようです。 ただ、PHPでの使用法はバージョン2とはかなり異なります。バージョン2

(CakePHP) 現在使用しているデータベースの種類を知りたい

【最終更新 2012-09-09】 テスト環境ではMySQL、本番ではSQLiteを使う、など、ひとつのCakePHPが数種類のデータベースを使う場合があって、現在使用しているデータベースによって処理を分けたいとき。 Config/database.php に記述したデータベースとの接続設…

(PHP, Windows) unlinkする前にfcloseせよ

ほんとに他愛もない話題です (-_-;) PHPで、フォームでアップロードされたファイルを編集後にユーザに送り返し、元のファイルは削除してしまう処理を作ったんです。 で、Linuxでは問題なかったのですが、Windowsでは下記のようなエラーが出ました。 Warning:…

(PHP, jQuery) MySQLをSQLiteへ変換するプログラムを作りました。

Version: 2.1.1 (2014-08-09) デモ GitHub 注意点重要なデータはアップロードしないでくださいWeb上のページでは、重要でないデータベースで変換を試してください。 重要なデータベースを変換する際は、ソースコードをダウンロードして、PHPが動くローカル環…

(LinuxMint12LXDE) USBメモリをフォーマットしたい

以前、ChromiumOSを入れていた8GBのUSBメモリを、 再びファイルの保管場所として使うべく、フォーマットすることにしました。 "fdisk"で簡単に出来るかと思ったのですが、うまくいかず、 結局、"GParted"をインストールして使うことにしました。 ※ 下記の方…

(PHP, JavaScript)フォーム送信されたファイルを加工後にダウンロードさせる処理

【参考】 ダウンロード後のファイルを削除したい - PHPプロ!Q&A掲示板 http://www.phppro.jp/qa/1339 下記の一連の処理を、cronなど面倒な処理を使わず、 なるべく簡単に、そしてユーザに親切な処理を作ることを目指します。 ユーザがファイルをフォーム送信する。 …

(MySQL, SQLite)テーブル名、フィールド名をクオートで囲みたい場合

大抵はクオートで囲まなくても問題ありません。 ※ データ値はシングルクオートで囲む必要があります。 SELECT * FROM table WHERE field = 'データ値'ずっとこの書き方を続けていましたが、うっかりSQLの予約語である"explain"をフィールド名に使ってしまっ…