2013年07月31日

mysqlのforupdateの挙動

レコードをアップデートする場合、forupdateでselect文を書く事でそのレコードがロックかかる。

「レコードが無い場合はどうなる?」というのが今回の議題。
テーブルロックがかかるのか?それとも行ロックなのか。

インデックスはuserIdに張ってあり、一意で取得できるものとする。

実験結果からすると、
一意で取得できるものだった場合で且つデータが存在しない場合はテーブルロックがかかる。
begin;
select * from table1 where userId = 1 for update;
として、もう一方のinsertを実行しようとすると固まった。

もしもデータが存在した場合(updateを行おうとした場合)は「行ロック」がかかった。

参考サイト1
参考サイト2
タグ:MySQL
posted by 1.618 at 12:17| Comment(0) | web系 | このブログの読者になる | 更新情報をチェックする

2013年07月25日

MySQLで複数行を一括でUPDATEする方法

MySQLではINSERT文は一括アップデート出来るが、UPDATEは一つずつしかできない。
それを解決する方法。

1. テンポラリテーブルを用意してそこにデータをINSERT。
2.
UPDATE tbl1
INNER JOIN tmptbl on tbl1.id = tmptbl.id
SET tbl1.body = tmptbl.body;

でいけるらしいw

ただし、一つテーブルが増えるので善し悪しはあると思う。

以上!

参考サイト
posted by 1.618 at 12:39| Comment(0) | web系 | このブログの読者になる | 更新情報をチェックする

2011年12月06日

さくらVPSの初期化

さくらVPSの初期化やらなにやら。
http://weble.org/2011/05/16/sakura-vps-and-centos

CentOSは使いやすいねほんと。
posted by 1.618 at 10:40| Comment(0) | web系 | このブログの読者になる | 更新情報をチェックする

2011年07月08日

Adobe DreamWeaver CS5.5

Adobe Deamweaver cs5.5版はjQuery Mobileが標準装備されてるらしい!
やっべ!メッチャ欲しい!w

http://adobe-html5.jp/entry/02/
タグ:adobe HTML5
posted by 1.618 at 09:46| Comment(0) | web系 | このブログの読者になる | 更新情報をチェックする

2010年01月06日

PHPでSJISのCSVを読むと必ず文字化けが起こる

今年第一号の記事!
…久しぶりに書くなぁ…w

PHPで、fgetcsvを使用してShift-JISのcsvを取り込むと必ずと言っていいほど文字化けが起こる。
非常にうざい。(爆怒

ネットで色々調べてたのだが、一番いい方法があったので記載する。


function mb_fgetcsv( &$fh, $test = false ) {
if ( feof( $fh ) ) return false ;

$csv = '' ;

while ( ! feof( $fh ) ) {
$csv .= mb_convert_encoding( fgets( $fh ), 'UTF-8', 'SJIS-win' ) ;
if ( ( ( preg_match_all( '/"/', $csv, $matches ) ) % 2 ) == 0 ) break ;
}

$values = array() ;

$temp = preg_replace( '/(?:\x0D\x0A|[\x0D\x0A])?$/', ',', $csv, 1 ) ;

preg_match_all( '/("[^"]*(?:""[^"]*)*"|[^,]*),/', $temp, $matches ) ;

for ( $i = 0 ; $i < count( $matches[ 1 ] ) ; $i++ ) {
if ( preg_match( '/^"(.*)"$/s', $matches[ 1 ][ $i ], $m ) ) {
$matches[ 1 ][ $i ] = preg_replace( '/""/', '"', $m[ 1 ] ) ;
}

$values[] = $matches[ 1 ][ $i ] ;
}

return $values ;
}


要はfgetで一行ずつ取得したものをUTF-8に直してその他の「おまじない」をしてから「,」で区切っている感じ。

他にもファイル全体をまず最初にUTF-8にしてからfgetcsvをする方法もあったのだが、文字がなくなっちまったりしたので、上記が一番安全。

参考サイト

以上!
タグ:PHP CSV 文字化け
posted by 1.618 at 11:48| Comment(0) | web系 | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。