MySQL関数とPDOとrhaco1.6とrhaco2でselect


とりあえずテーブルの作成とインサート


CREATE TABLE  `sample` (
 `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
 `value` TINYBLOB NULL ,
 `create_date` TIMESTAMP NULL
) ENGINE = INNODB;

insert into sample(value,create_date) values('abc','2009/04/23 00:00:00');
insert into sample(value,create_date) values('def','2009/04/19 00:00:00');
insert into sample(value,create_date) values('def','2009/04/10 00:00:00');





mysql_*


<?php
date_default_timezone_set("Asia/Tokyo");

$results = array();
$con = mysql_connect("localhost","root","root");

if(false !== mysql_select_db("app",$con)){
	$resource = mysql_query(sprintf("select id,value,create_date from sample where value = '%s'",mysql_escape_string("def")),$con);

	while(false !== ($resultset = mysql_fetch_array($resource,MYSQL_ASSOC))){
		$obj = new stdClass();
		$obj->id = (int)$resultset["id"];
		$obj->value = $resultset["value"];
		$obj->create_date = strtotime($resultset["create_date"]);
		$results[] = $obj;
	}
	mysql_free_result($resource);
	mysql_close($con);
}
foreach($results as $obj){
	print(sprintf("%d [%s] %s\n",$obj->id,date("Y/m/d H:i:s",$obj->create_date),$obj->value));
}
?>



PDO


<?php
date_default_timezone_set("Asia/Tokyo");

$results = array();
$con = new PDO("mysql:dbname=app;host=localhost;","root","root");
$statement = $con->prepare("select id,value,create_date from sample where value = ?");
$statement->execute(array("def"));
while(false !== ($resultset = $statement->fetch(PDO::FETCH_ASSOC))){
	$obj = new stdClass();
	$obj->id = (int)$resultset["id"];
	$obj->value = $resultset["value"];
	$obj->create_date = strtotime($resultset["create_date"]);
	$results[] = $obj;
}
foreach($results as $obj){
	print(sprintf("%d [%s] %s\n",$obj->id,date("Y/m/d H:i:s",$obj->create_date),$obj->value));
}
?>



rhaco1.6


<project rhacover="1.6.1" version="0.0.1" name="sample_app" xmlns="http://rhaco.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://rhaco.org http://m.rhaco.org/xsd/project_1_6_x.xsd">
	<database name="app">
		<table name="sample">
			<column name="id" />
			<column name="value" />
			<column name="create_date" type="timestamp" />
		</table>
	</database>
</project>

setup -> http://gihyo.jp/dev/serial/01/rhaco/0003

<?php
require("__settings__.php");
Rhaco::import("database.DbUtil");
Rhaco::import("model.Sample");

$db = new DbUtil(Sample::connection());
foreach($db->select(new Sample(),new Criteria(Q::eq(Sample::columnValue(),"def"))) as $obj){
	print(sprintf("%d [%s] %s\n",$obj->getId(),$obj->formatCreateDate(),$obj->getValue()));
}
?>



rhaco2


<?php
require("/Users/tokushima/Documents/workspace/rhaco/rhaco2");
def("db.Db@app","type=mysql,dbname=app,host=localhost,user=root,password=root");

import("db.Dao");
class Sample extends Dao{
	static protected $__id__ = "type=serial";
	static protected $__create_date__ = "type=timestamp";
	protected $id;
	protected $value;
	protected $create_date;
}
foreach(C(Sample)->find(Q::eq("value","def")) as $obj){
	println(sprintf("%d [%s] %s",$obj->id(),$obj->fmCreate_date(),$obj->value()));
}
?>




結果:
2 [2009/04/19 00:00:00] def
3 [2009/04/10 00:00:00] def