Kotchasan Framework Documentation

Kotchasan Framework Documentation

Kotchasan\QueryBuilder\UpdateBuilder

TH 05 Feb 2026 06:23

Kotchasan\QueryBuilder\UpdateBuilder

UpdateBuilder สร้าง UPDATE queries

การใช้งาน

use Kotchasan\Database;

$db = Database::create();

// Basic UPDATE
$affected = $db->update('users')
    ->set([
        'status' => 'inactive',
        'updated_at' => date('Y-m-d H:i:s')
    ])
    ->where('id', '=', 1)
    ->execute();

echo "Updated {$affected} row(s)";

เมธอดหลัก

update()

$db->update('tablename')

set()

->set([
    'column1' => 'new_value1',
    'column2' => 'new_value2'
])

where()

->where('column', '=', 'value')

ตัวอย่าง

Update with Multiple Conditions

$affected = $db->update('products')
    ->set(['price' => 99.99])
    ->where('category', '=', 'electronics')
    ->where('stock', '>', 0)
    ->execute();

Increment/Decrement

// ลดจำนวน stock
$db->update('products')
    ->set(['stock' => \Kotchasan\Database::raw('stock - 1')])
    ->where('id', '=', $productId)
    ->execute();

การดู SQL (Debugging)

// สร้าง SQL โดยไม่ execute
$conn = new \Kotchasan\Connection\Connection(new \Kotchasan\Connection\MySQLDriver());
$qb = new \Kotchasan\QueryBuilder\UpdateBuilder($conn);
$sql = $qb->update('users')
    ->set(['status' => 'inactive'])
    ->where(['id', 1])
    ->toSql();

// ผลลัพธ์: UPDATE `users` SET `status` = :status WHERE (`id` = :qb_p0)

ข้อควรระวัง

⚠️ สำคัญ: ใส่ where() เสมอเพื่อหลีกเลี่ยง update ทุก rows

  • อย่าส่ง input ผู้ใช้เข้า raw SQL โดยตรง
  • ใช้ parameter binding แทนการต่อ string
  • ใช้ Sql::raw() เฉพาะกับ expressions ที่เชื่อถือได้

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