次のクエリを使用して、MySQL データベースからシリアル化された配列をフェッチします。
$sql = "SELECT own_addressbooks
FROM users_modules
WHERE user = ?
AND own_addressbooks <> ?";
//result : a:2:{i:0;s:1:"1";i:1;s:1:"2";}
次の表から:
CREATE TABLE IF NOT EXISTS `users_modules` (
`user` int(11) NOT NULL AUTO_INCREMENT,
`own_groups` text NOT NULL,
`read_groups` text NOT NULL,
`modify_groups` text NOT NULL,
`own_mails` text NOT NULL,
`read_mails` text NOT NULL,
`own_calendars` text NOT NULL,
`modify_calendars` text NOT NULL,
`read_calendars` text NOT NULL,
`own_addressbooks` text,
`modify_addressbook` text NOT NULL,
`read_addressbooks` text NOT NULL,
PRIMARY KEY (`user`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
私が得る配列のシリアル化を解除する:
array(2) { [0]=> string(1) "1" [1]=> string(1) "2" }
配列のすべてのフィールドは、次の表の行です。
CREATE TABLE IF NOT EXISTS `addressbooks` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(100) COLLATE utf8_bin NOT NULL,
`entries` text COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=2 ;
結合クエリを使用して、各アドレス帳のタイトルを取得する方法はありますか? または、ところで、それを行うための最良の方法は何ですか?