Kotchasan Framework Documentation

Kotchasan Framework Documentation

PDOResult

TH 05 Feb 2026 06:23

PDOResult

\Kotchasan\Result\PDOResult เป็น implementation ของ ResultInterface สำหรับ PDO queries

การสร้าง

use Kotchasan\Result\PDOResult;

// จาก PDOStatement
$result = new PDOResult($statement);

// กำหนด result format
$result = new PDOResult($statement, 'array');

Constructor

public function __construct(\PDOStatement $statement, ?string $resultFormat = null)
Parameter Type Description
$statement \PDOStatement PDOStatement instance
$resultFormat string\|null Format: 'default', 'object', 'array'

Result Formats

Object Format (Default)

$result = new PDOResult($statement);  // หรือ 'default' หรือ 'object'

$row = $result->fetch();
echo $row->id;
echo $row->name;

Array Format

$result = new PDOResult($statement, 'array');

$row = $result->fetch();
echo $row['id'];
echo $row['name'];

Methods

fetch()

ดึงแถวถัดไป (object หรือ array ตาม format)

while ($row = $result->fetch()) {
    echo $row->name;
}

fetchAll()

ดึงทุกแถวเป็น array

$users = $result->fetchAll();
foreach ($users as $user) {
    echo $user->name;
}

fetchColumn(int $columnNumber = 0)

ดึง column เดียว

$id = $result->fetchColumn();      // column แรก
$name = $result->fetchColumn(1);   // column ที่ 2

rowCount()

จำนวนแถวที่ affected

// สำหรับ INSERT/UPDATE/DELETE
$affectedRows = $result->rowCount();

getResult()

ดึง PDOStatement

$statement = $result->getResult();
// $statement instanceof \PDOStatement

reset()

รีเซ็ตโดยการ execute statement ใหม่

$result->reset();  // execute statement อีกครั้ง

close()

ปิด cursor

$result->close();  // เรียก closeCursor()

ตัวอย่างการใช้งาน

Query และประมวลผล

$database = \Kotchasan\Database::create();

$result = $database->select('*')
    ->from('user')
    ->where([['status', 1]])
    ->execute();

// ดึงทีละแถว
while ($user = $result->fetch()) {
    echo "{$user->id}: {$user->name}\n";
}

// ปิด cursor
$result->close();

Check Empty

$result = $database->select('*')
    ->from('user')
    ->where([['id', 999]])
    ->execute();

if ($result->isEmpty()) {
    echo "User not found";
}

Get Column Count

$result = $database->select('id', 'name', 'email', 'phone')
    ->from('user')
    ->execute();

echo "Columns: " . $result->columnCount();  // 4

Internal Properties

Property Type Description
$statement \PDOStatement PDO statement instance
$isEmpty bool Flag ว่า result หมดแล้วหรือยัง
$resultFormat string Format: 'default', 'array', 'object'

คลาสที่เกี่ยวข้อง