Archives by date

You are browsing the site archives by date.

【PHP】SJISからUTF8に文字コード変換する際の文字化けを防ぐ。

Excelで生成したCSVファイルをPHPで取り込む際、下記のようにSJISからUTF8の文字コード変換を行うが、その際「チルダ」や「全角ハイフン」が正しく認識されない事がある。

$str = mb_convert_encoding($str, mb_internal_encoding(), 'SJIS');

そのため、mb_convert_encoding()第3引数のfrom_encodingを下記のように指定してやる必要がある。

$str = mb_convert_encoding($str, mb_internal_encoding(), 'SJIS-WIN');

上記の通り文字コードを指定した結果、文字化けは綺麗に解消された。

nbsp;

【MySQL】データベースを指定してdumpファイルを生成する。

メモ。

mysqldump -u [ユーザー名] -p [データベース名] > [出力ファイルパス]

下記例。

mysqldump -u root -p hoge > /path/to/output.sql

 

【MySQL】重複しているレコードを最古のものを残しすべて削除するSQL。

調べていたら神SQLを見つけたのでメモ。

サブクエリを用いる。

delete from `[table_name]` where id not in (select min_id from (select min(t1.id) as min_id from `[table_name]` as t1 group by t1.[duplicate_col]) as t2);

table_nameに対象のテーブル名を。
duplicate_colに重複レコードが確認できるカラム名を。

これで重複していた行は古いものを1件のみ残し、すべて削除される。

神すぎる。

 

【CakePHP2.4】find()で複数のOR条件をANDで結合したいときの書き方。

めも。

$conditions = array(
	$this->alias.'.col1' => 'value_1',
	$this->alias.'.col2' => 'value_2',
	
	'OR' => array(
		array($this->alias.'.col3 LIKE' => '%value_3%'),
		array($this->alias.'.col3 LIKE' => '%value_4%'),
	),
	'AND' => array(
		'OR' => array(
			array($this->alias.'.col4' => 'value5'),
			array($this->alias.'.col5' => 'value6')
		)
	)
);