select の orderby
selectに当たり前のようにつけるorder by
わすれている。
ついでにcountとoffsetでの取得を追加。
あらら、、、
・
・
・// select Count
public static function selectCount( $pdo, $tblname, $fields, $where )
{
$sql = CDbMethods::selectStr( $tblname, $fields, $where, null );
$sql = " SELECT COUNT(*) AS CT FROM ( ".$sql." )";$params = CDbMethods::whereParams( $where );
$pdost = CDbMethods::sqlExec( $pdo, $sql, $params );
$result = $pdost->fetchAll();return $result[0][ 'CT' ];
}// select offset
public static function selectOffset( $pdo, $tblname, $fields, $where, $offset, $limit )
{
$sql = CDbMethods::selectStr( $tblname, $fields, $where, null );
$sql = $sql." LIMIT ".$limit." OFFSET ".offset;$params = CDbMethods::whereParams( $where );
$pdost = CDbMethods::sqlExec( $pdo, $sql, $params );
return $pdost->fetchAll();
}// select
public static function select( $pdo, $tblname, $fields, $where, $orderby, $forupdate=false )
{
$ret = -1;
$sql = "";$sql = CDbMethods::selectStr( $tblname, $fields, $where, $orderby );
if ( $forupdate ) {
$sql = $sql." FOR UPDATE ";
}$params = CDbMethods::whereParams( $where );
$pdost = CDbMethods::sqlExec( $pdo, $sql, $params );
return $pdost->fetchAll();
}// selectStr
private static function selectStr( $tblname, $fields, $where, $orderby )
{
$sql = "";
$sql = $sql." SELECT ";
$ct = 0;
for ( $i = 0; $i < count($fields); $i++ ) {
if ( $ct > 0 ) {
$sql = $sql.", ";
}
$sql = $sql.$fields[$i];
$ct++;
}
$sql = $sql." FROM ".$tblname;$sql = $sql.CDbMethods::whereStr( $where );
if ( $orderby ) {
$sql = $sql." ORDER BY ";
$ct = 0;
for ( $i = 0; $i < count($orderby); $i++ ) {
if ( $ct > 0 ) {
$sql = $sql.", ";
}
$sql = $sql.$orderby[$i];
$ct++;
}
}return $sql;
}
・
・
・
http://d.hatena.ne.jp/be-cool/20090303/1236092101