การปรับแต่ง codeigniter ให้สามารถเรียกใช้ storeprocedure ของ mysql ได้

เนื่องจากเราไม่สามารถใช้งาน store procedure ของ MySQL บน codeigniter ตรงๆ ได้ ตรงนี้ต้องเข้าไปปรับแต่ง ดังนี้ครับ

  1. แก้ไฟล์ config  ( application/config/database.php ) เปลี่ยน dbdriver จาก mysql -> mysqli
  2. แก้ไฟล์ไดรเวอร์ของเฟรมเวิร์ค ( system/driver/mysqli_result.php)  โดยเพิ่มฟังก์ชั่นนี้
    function next_result()
    {
    if (is_object($this->conn_id)){
    return mysqli_next_result($this->conn_id);
    }
    }
    

จากนั้นเวลาเราเรียกใช้ store procedure ให้เราเรียกใช้ฟังก์ชั่น  next_result() และ free_result( )(ตัวนี้ถ้าเราไม่ได้ SELECT ตัวแปร out ก็ให้ละไว้ครับ ไม่งั้น resultset ที่เราได้จะเข้าถึงไม่ได้)  หลังจากที่ CALL Procedure ก่อนที่จะเรียกคำสั่งถัดไปครับ เช่น เราเรียก CALL sample(‘param1′,’param2’, @result )  และเราต้องการ select @result ออกมาให้เขียนแบบนี้ครับ


$sql = "CALL sample( ?, ? ,@e_max ) " ;
 $parameter = array( $param1, $param2 );
 $qresult = $this->db->query($sql, $parameter );
 $qresult->next_result();
 $qresult->free_result(); 
 $result = $this->db->query("SELECT @result as result");

เท่านี้เราก็สามารถใช้งาน store procedure บน codeigniter ได้ สบาย ๆ

แหล่งอ้างอิง

Advertisements

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s

Up ↑

%d bloggers like this: