การปรับแต่ง 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

การติดตั้ง sparks สำหรับ codeigniter บน ubuntu

sparks เป็น package manager สำหรับ codeigniter ตัวนี้ผมจำเป็นต้องลงเพราะต้องการใช้งาน rest-client สำหรับ เรียกใช้งาน API ต่างๆ เช่น twitter หรือ facebook  โดยตัวมันเองมีการเรียกใช้ sparks  (แต่ไม่บอกในวิธีการติดตั้ง) มาดูวิธีการติดตั้งดีกว่า ครับ

  1. เปิด terminal ขึ้นมา ย้ายตำแหน่งไปยัง root ของ codeigniter (ตำแหน่งที่มีไฟล์ index.php และ แฟ้มต่างๆ เช่น config view model เป็นต้น)
  2. ทดสอบว่ามี php อยู่ใน path ที่เราจะใช้งานไหม (โดยปกติจะมี ถ้าไม่มีให้ติดตั้ง)
    which  php
    โดยปกติต้องตอบว่า /usr/bin/php
  3. ทดสอบว่ามีการติดตั้ง curl แล้วหรือยัง
    which curl
    ของผมไม่มี ติดตั้งเพิ่มเติม sudo apt-get install curl ซึ่งควรจะอยู่ที่  /usr/bin/curl
  4. พิมพ์คำสั่งต่อไปนี้เพื่อทำการติดตั้ง
    php -r “$(curl -fsSL http://getsparks.org/go-sparks)” แล้ว enterสำหรับคนที่เจอข้อความแบบนี้(ผมก็เจอเช่นกัน) ก็คือว่าเราไม่ได้ทำการย้ายตำแหน่งไปตามข้อ 1 ครับ
    Can’t find application/core. Currently this script only works with the default instance of Reactor. You may need to try a manual installation..

    ถ้าใครใช้วิธีนี้ติดตั้งไม่ได้ไปดูวิธีติดตั้งแบบอื่นๆ ตามลิงค์นี้ครับ
    http://getsparks.org/install

  5. ติดตั้ง spark
    php tools/spark install -v1.0.0 example-spark
  6. ทดสอบว่า spark ติดตั้งสมบูรณ์ เพิ่มสองบรรทัดต่อไปนี้ลงใน โปรแกรมของเรา
    $this->load->spark('example-spark/1.0.0');      
    $this->example_spark->printHello();

การใช้งาน PHPExcel ร่วมกับ CodeIgniter

เราสามารถนำไลบราลี PHPExcel มาใช้งานร่วมกับ CodeIgniter ได้ง่ายๆ ดังนี้

ดาวน์โหลดไฟล์ zip ของ PHPExcel จาก gitHub  แล้วแตกไฟล์ zip ดังกล่าว ก๊อปปี้เฉพาะไฟล์ที่อยู่ในแฟ้ม Classes ไปไว้ที่แฟ้ม application/third_party  ดังรูป

Untitled

จากนั้นให้สร้างไฟล์ php เพื่อครอบไลบราลีตัวนี้ไว้โดยบันทึกไว้ในแฟ้ม application/library เพื่อใช้เป็นตัวกลางในการเรียกใช้งาน PHPExcel ในที่นี้ ผมจะสร้างไฟล์ชื่อ Excel.php  แล้วพิมพ์โค๊ดดังต่อไปนี้ลงไป


<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

require_once APPPATH."/third_party/PHPExcel.php";

class Excel extends PHPExcel{

	public function __construct(){
		parent::__construct();
	}
}

Read more