Home > MySQL Archive
MySQL Archive
MySQLのバルクインサート
- 2008-07-29 (火)
- MySQL
MySQLにはバルクインサートという機能があって、
一気にデータを入れる方法があるそうです。
その際の書き方は以下のとおり。
INSERT INTO [テーブル名] ( id, created_at, updated_at ) VALUES
( ‘ ‘,now(),now() ),
( ‘ ‘,now(),now() ),
( ‘ ‘,now(),now() )
;
- Comments: 0
- Trackbacks: 0
Got a packet bigger than ‘max_allowed_packet’ bytes
- 2008-07-28 (月)
- MySQL
INSERT文を書いたテキスト文章を
テーブルに流し込むために以下のコマンドを打ちました。
mysql -u[ユーザー名] -p[パスワード] [DB名] < master_client.sql
すると以下のエラーが出ました。
Got a packet bigger than ‘max_allowed_packet’ bytes
どうやらMySQLの最大利用バイト数が小さかったようです。
そこで、/etc/my.cnf を以下のように編集。
[mysqld]
・・・
max_allowed_packet=128M
参考にさせていただいたのは
以下のサイトです。
mysql : Got a packet bigger than 'max_allowed_packet' bytes
http://linux.ohwada.jp/modules/smartsection/item.php?itemid=402
(はっぴぃ・りなっくす)
- Comments: 0
- Trackbacks: 0
mysql_escape_stringの罠
仕事でずいぶん前に作られたPHPをいじっていました。
DBの型も、PHPの入力チェックも通っているのに
なぜかSQLエラーが出ていたので調べてみました。
諸悪の根源はPHPファイルがSJISだったことであるようです。
エラーを出している部分は以下の部分でした。
$hoge = mysql_escape_string($hoge);
こうするとPHPファイル自体がSJISの場合、
$hogeに¥(円マーク)が入ってしまうケースがあり、
SQLエラーが起こっていました。
そこで以下に変更しました。
mysql_set_charset(’sjis’);
$hoge = mysql_real_escape_string($hoge);
mysql_real_escape_stringは
mysql_set_charsetの文字コードを見て$hogeを変換してくれるそうです。
ちゃんとした作りにしようと強く実感しました(苦笑)
- Comments: 0
- Trackbacks: 0
ADODBでのWHERE句 IN演算子
- 2008-01-31 (木)
- MySQL
PHPのmysql関数で書かれているSQL文を
ADODBでの形に書き換えようと思ったときにつまづきました。
ADOでお馴染みの(?)prepareとexecuteを利用しようとして、
?を使ったクエリを作成しました。
$query = select * from [table] where [カラム] in ( ? ) ;
?に入るのは「1,2,3,4,5,6」という文字列。
これで実行すると・・・
沢山データがとれるはずがなぜか1つだけしかとれませんでした。
そこでexecuteされた結果をvar_dumpして、
実行されたSQL文を見てみると、
select * from [table] where [カラム] in ( ‘1,2,3,4,5,6′ ) ;
・・・文字列全体をクオートで囲ってしまっていました。
本来なら
select * from [table] where [カラム] in ( 1,2,3,4,5,6 ) ;
select * from [table] where [カラム] in ( ‘1′,’2′,’3′,’4′,’5′,’6′ ) ;
のどちらかでないといけないのですが・・・。
いろいろ調べましたが、結局分からずで
SQL文の中に関数を入れてしまいました。
(エスケープはもちろんしていますが・・・)
どなたかやり方をご存じの方、いらっしゃいませんか?(苦笑)
ADODBマニュアルをしっかり読めば書いてあるのだろうか・・・。
- Comments: 1
- Trackbacks: 0
smartyとPHPのMVC具体例
システム初心者の私は、
MVCを理解し切れていません(苦笑)
ですが、最近ちょっとわかってきたことがあります。
それは、文字列をクエリの中とかにあまり入れてはいけないということ。
具体的にいうと、
SELECT
IF([カラム名] , ‘○’ , ‘-’ )
FROM
[テーブル名];
といった風に、
SELECTの時点で文字列を入れているアプリがあったのですが、
これをやめてsmartyで制御したほうがよさそうです。
{if $test}○{else}-{/if}
ファイルの文字コードとかが絡んでくると面倒な話になります。
(文字コード変えたとたんに表示されなくなるとか。)
今までテンプレートとアプリを
どの線で区切っていけばいいかわからなかったのですが、
ひとついい勉強になりました。
- Comments: 0
- Trackbacks: 0
Home > MySQL Archive
- Archives
- Tag Cloud
-
- さくら
- はてな
- アウトプットフィルタ
- アクセス解析
- アップデート
- アドオン
- アプリ
- インストール
- ウェブマスターツール
- エラー
- カフェ関連サイト
- カンファレンス
- キャスト
- キーワード
- クエリ
- クラス
- クロール
- グローバル変数
- コマンド
- サムネイル
- サーバー
- シェル
- システムエンジニア
- セッション
- セミナー
- ソース
- タグ付け
- タブ
- チェック
- チャネル
- ツール
- テスト
- テーマ
- デザイン
- デバッグ
- データ型
- ドメイン
- バックアップ
- バリュードメイン
- バージョン
- パスワード
- パソコン
- パラメータ
- パース
- フォーマット
- フリーソフト
- ブラウザ
- ブラウザ対応
- ブログパーツ
- プラグイン
- プリフィルタ
- ポート番号
- ミュージック
- メンバ変数
- モバイル
- ライブラリ
- レポート
- ロリポップ
- ローカル変数
- 仕事術
- 便利
- 光
- 共用
- 動画
- 命名規則
- 変数
- 容量
- 文字コード
- 文字列
- 文字化け
- 日本語
- 書き方
- 本
- 検索
- 検索エンジン
- 演算子
- 無線LAN
- 理由
- 自動化
- 英語
- 設定
- 認証
- 購入
- 関数
- 高速化
- Adobe
- ADODB
- AdSense
- AIR
- Airmac
- API
- Apple
- bash
- cafeコミュ!
- cafeトキワ荘
- cafeペ!
- cakePHP
- CentOS
- CentOS5
- CSS
- CSV
- DB
- DB接続
- DNS
- docomo
- drupal
- Ethna
- FAQ
- FireFox
- FTP
- function
- Gmail
- GoogleAdsense
- GoogleAnalytics
- htaccess
- html
- import
- JavaScript
- JSON
- literal
- Lunascape
- Mac
- Movable-Type
- MVC
- NAS
- new
- nifty
- PC
- PEAR
- phing
- PHP関数
- PHP4
- PHP5
- ping
- plugin
- RSS
- ruby
- screen
- SEO
- simplexml
- sitemap
- SJIS
- Sleipnir
- smarty
- SMO
- ssb
- ssh
- svn
- symfony
- vim
- W3CDTF
- Windows
- WordPress
- XHTML
- XML
- XML-RPC
- xoops
- Feeds