Long Live The King
ข้าพเจ้าไม่ได้มีพรสวรรค์พิเศษอะไร ข้าพเจ้าเพียงแต่มีความกระหายใคร่รู้อยู่เสมอ ทุ่มเทให้กับสิ่งที่อยากรู้ พากเพียรอย่างทรหด และสำรวจวิจารณ์ความรู้ของตัวเองเป็นประจำ ปัจจัยเหล่านี้คือที่มาของแนวคิดต่างๆ ของข้าพเจ้า .... อัลเบิร์ต ไอน์สไตน์

วันอาทิตย์ที่ 13 ตุลาคม พ.ศ. 2556

วิธี Insert Update Delete (OOP PHP Part3)



บทความนี้เกี่ยวข้องกับการ insert, delete, update ข้อมูลแบบ OOP PHP เป็นความต่อเนื่องจากบทความก่อน ซึ่งเราต้องใช้งาน property, function บางตัวของบทความก่อนด้วย......

ไฟล์ที่ต้องมี index.php, database.php, MySqlConn.php ซึ่งเป็นไฟล์ที่ยกมาจากบทความก่อนหน้านี้
ฟังก์ชั่น insert()
เริ่ม
ผมจะสร้าง function เพิ่มที่ไฟล์ MySqlConn.php สำหรับ insert ข้อมูลลง database แแบบนี้
function insert($tableName, $data)
{
//บันทึกลงฐานข้อมูล....
}
function นี้รับ parameter มา 2 ค่าคือ ตารางฐานข้อมูล กับ ฟิลด์และข้อมูลที่ส่งมาแบบ Array
ดังนั้นเราก็ต้องมาแยก Array ออกเป็น 2ชุด ชุดแรกเป็น keys ชุดที่2เป็น value ด้วยฟังก์ชั่น  2ฟังก์ชั่นคือ
$keys = array_keys($data); //เก็บ keys ของ Array

$value = array_values($data); //เก็บ values ของ Array

แล้วเราก็นำมาวนลูปด้วย froeach() เพิ่มเครื่องหมาย ',' เข้าไปด้วย แบบนี้
foreach( $keys AS $key => $k ) {$sql .= $k;
if ( $key !== count($keys)-1 ) $sql.= ', ';}

foreach( $value AS $val => $v ) {$sql .= "'".$v."'";
if ( $val !== count($value)-1 ) $sql.= ', ';}
จากนั้นก็นำมาใส่ในฟังก์ชั่น insert() ก็จะออกมาในรูปแบบนี้
ไฟล์ MySqlConn.php
public function insert($tableName, $data)
    {
        if(!empty($data)){
            
        $keys = array_keys($data);   
        $value = array_values($data);       
        
        $sql = "INSERT INTO $tableName ";
        $sql .= "(";
        foreach( $keys AS $key => $k ) {$sql .= $k;
        if ( $key !== count($keys)-1 ) $sql.= ', ';}
        $sql .= ")";
        $sql .= "VALUES ";
        $sql .= "(";
        foreach( $value AS $val => $v ) {$sql .= "'".$v."'";
        if ( $val !== count($value)-1 ) $sql.= ', ';}
        $sql .= ")";
        if($sql){          
        $this->_mysql->query($sql);
        }
        }
    }
พอตอนเรียกใช้งานเราก็แค่ส่งชื่อ ตารางฐานข้อมูล พร้อมกับค่าแบบ Array แบบนี้
ไฟล์ index.php
$data = array(
'test' => 'test insert',
); 

$Db = new MySqlConn; 
$Db->insert('test', $data);
จากโค้ดด้านบน
มีความหมายว่า insert into test (title) values ('test insert')
เพียงแค่นี้ เราก็สามารถ insert ข้อมูลลงฐานข้อมูลได้แล้ว แล้วก็เป็นการ insert ข้อมูลแบบ Array ง่ายๆ
สบายๆ

ฟังก์ชั่น update()
เริ่ม
ผมก็จะเริ่มสร้างฟังก์ชั่น update() แบบนี้
function update($tableName, $data)
{
//อัพเดทลงฐานข้อมูล....
}
ดูเพียงแค่นี้ท่านก็คงร้อง อ๋อ! ครับผมเหมือนกันกับ function insert() เพียงแต่คราวนี้ผมใช้ for ในการวนลูป
พร้อมกับเพิ่ม $this->where เข้าไปด้วย ซึ่ง property ตัวนี้เราได้สร้างไว้แล้วในบทความก่อนเพียงแต่หยิบมันมาใช้ก็เท่านั้น
public function update($tableName, $data)
    {
        if(!empty($data)){
        $keys = array_keys($data);
        
       $sql = "UPDATE $tableName SET ";
            for($i = 0; $i < count($data); $i++)  
           {  
                if(is_string($data[$keys[$i]])){  
                    $sql .= $keys[$i]."='".$data[$keys[$i]]."'";  
                    if($i != count($data)-1){$sql .= ',';}     
                }   
            }
            
            $sql .= $this->_where;
            
        if($sql){ 
        $this->_mysql->query($sql);
        }
        }
    }
เพียงเท่านี้เราก็ได้ function update() ไว้ใช้งานแล้ว พอตอนเรียกใช้งาน เราก็ส่งชื่อ ตารางฐานข้อมูล พร้อมกับค่าแบบ Array แบบนี้
ไฟล์ index.php
$data = array(
'test' => 'test update',
); 

$Db = new MySqlConn; 
$Db->where('id_update', 'id');
$Db->update('test', $data);
จากโค้ดด้านบน
มีความหมายว่า update test  set 'test' = 'test update' where id_update = 'id'

ฟังก์ชั่น delete()
เริ่ม
สร้างฟังก์ชั่น delete() แบบนี้
public function delete($tableName)
{
    if(!empty($tableName)){
    $sql = "delete from $tableName $this->_where";
    $this->_mysql->query($sql);
    }
}
ฟังก์ชั่น delete() ของเราก็มีแค่นี้ รับ parameter มา 1ค่าคือตารางฐานข้อมูล พอตอน delete เราก็เรียกใช้
property $this->where แค่นี้ พอตอนเรียกใช้
$Db = new MySqlConn; 
$Db->where('id_test', 'id');
$Db->delete('test');
จากโค้ดด้านบน
มีความหมายว่า delete from test where id_test = 'id'
เพียงแค่นี้เราก็มีโค้ดสำหรับไว้ลบแถวในฐานข้อมูลได้แบบง่ายๆ สบายๆอีกแล้ว...

เดี๋ยวผมขอเพิ่มเติมฟังก์ชั่นอีกสัก 1ฟังก์ชั่น คือ num_rows() เอาไว้นับแถวในฐานข้อมูล
รูปแบบ
public function num_rows($tableName)
{
    $this->_tableName = $tableName;
    $sql = 'SELECT * FROM';
    $query = $this->_mysql->query("$sql $this->_tableName $this->_where");
    $results = mysqli_num_rows($query);

    return $results;
}
ฟังก์ชั่นนี้ไม่มีอะไรมากครับ แค่รับตารางฐานข้อมูลเข้ามาแล้วก็ นับแถวจากนั้นก็ return ค่าออกไป โดยที่เราสามารถที่จะใช้
where ได้ พอตอนใช้งาน
$Db = new MySqlConn; 
$Db->where('username', 'bookneo');
$Db->num_rows('test');
จากโค้ดด้านบน มีความหมายว่า
$sql = select * from test where username = 'bookneo'
mysql_num_rows($sql)

สำหรับการสร้าง ฟังก์ชั่นก็มีเพียงเท่านี้ที่เหลือท่านก็ลองปรับปรุงเปลี่ยนแปลง เอาไปใช้ได้ตามใจชอบ และท้ายที่สุดท่านก็อาจจะมี framework เล็กๆเป็นของตัวเองในที่สุด....

บทความนี้ก็จบลงเพียงเท่านี้ คงจะเหลืออีกสัก 1 บทความที่เกี่ยวกับ OOP คือตัวอย่างการนำไปใช้ เอาไว้เจอกันในบทควาามหน้าครับ วิธีการ Login แบบ OOP PHP .....




0 ความคิดเห็น:

แสดงความคิดเห็น

© Bookneo, AllRightsReserved.

ขับเคลื่อนโดย Blogger Designed by Nikhorn Thongchuay