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