【CI】ログインしたユーザーの情報を取得したい

ログインしたユーザーの情報を取得したいとき。
codeigniterであればdx系の関数で簡単に取得ができる。

//ログインしているユーザーのユーザーID取得
$this->dx_auth->get_user_id();

//ログインしているユーザーのユーザー名取得
$this->dx_auth->get_username();

//ログインしているユーザーのロールID取得
$this->dx_auth->get_role_name();

//ログインしているユーザーの管理者判別
$this->dx_auth->is_admin();

//ログイン判別
$this->dx_auth->is_logged_in();

また、パーミッションを使えば、
ログインしないと閲覧できないページを設定することができる。

//パーミッション
$this->dx_auth->check_uri_permissions();


【コマンド】SQLを操作したい

コマンド上でSQLを操作したいとき。
一連のスクリプトがこちら。

//サーバに接続
ssh {sample@192.XXX.XX.XXX}

//DBサーバに接続
mysql -u {userID} -p -h {IPaddress}

//テーブルを選択
use {tablename};

//テーブル一覧を表示
show tables;

//テーブルの構造を一覧で表示
show columns from `{user}`;


【SQL】よく使うSQL文

恥ずかしい話ですが、、、
SQL文を書いていて、よくSETなのかVALUEなのかこんがらがることがある。
ので、まとめた。

--SELECT文
SELECT * FROM `users` WHERE `id`='$id';

--INSERT文
INSERT INTO `users` SET (`name`,`age`) VALUES ('$name','$age');

--UPDATE文
UPDATE `users` SET `name`='$name' WHERE `id`='$id';
 
--DELETE文
DELETE FROM `users` WHERE `id`='$id';

--テーブルの作成
CREATE TABLE `news` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`title` VARCHAR(255),
	`contents` TEXT,
	`flag` TINYINT(1)
	PRIMARY KEY (`id`)
);

--テーブルの削除
DROP TABLE `news`;


【CI】文字数を制限したい

文字数を制限したいとき。

「limiter」を使う。

limiter($v['title'],100);

第一引数で値を設定、
第二引数で制限したい文字数を設定する。

ちなみに、マルチバイト文字(カナなど)も1文字として数える。

limiter(`あいうえおかきくけこ`,5);
//「あいうえお」まで表示

limiter(`abcdefghij`,5);
//「abcde」まで表示


【CI】SQLに入れた値のidを取得したい

SQLに入れた値のidを取得したいとき。

「$this->db->insert_id();」を使う。

//usersへ追加
$sql = "INSERT INTO `users` (
								`role_id` , 
								`username` , 
								`password` , 
								`email` , 
								`banned` , 
								`last_ip`, 
								`created` , 
								`modified` 
							) VALUES (
								'$role_id' , 
								'$username' , 
								'$password_enc' , 
								'$email' , 
								'$banned' , 
								'$ip' , 
								NOW() , 
								 NOW() 
							);";
$q = $this->db->query($sql);
$insert_id = $this->db->insert_id();

ここでいう「id」とは、INSERT文に書いてあるidではない。
SQLに入れた際にAUTO_INCREMENT(自動連番付け)されるidのことを指す。

そのため、SQLに入れた直後に、入れたばかりの値のidを取得するファンクション (=$this->db->insert_id();)
が必要になる。