GotoKnow
  • เข้าระบบ
  • สมัครสมาชิก
  • แผงจัดการ
  • ออกจากระบบ
GotoKnow

การใช้ PHP ติดต่อกับ PostgreSQL (PHP & PostgreSQL )

ง่วงนอน

เข้าเรื่องกันเลย

ก่อนอื่นทดสอบก่อนว่า PHP ของท่าน สนับสนุนการใช้ PostgreSQL Function หรือไม่ ดูที่ การเขียนโปรแกรมภาษา PHP เชื่อมต่อกับ LDAP SERVER(1)

ตี๋ต่างว่าทำได้

ก่อนอื่นต้องสร้าง connect ขึ้นมาก่อน ก็ตามนี้เลยครับ
$conn_string = "host=localhost port=5432 dbname=test user=testpgsql";
$dbconn = pg_connect($conn_string);

วิธีการได้มาก็ อ่านได้จาก การใช้ Visual Basic 6.0 ติดต่อกับ MySQL (VB 6 & MySQL)

ต่อมา ........ ก็วิ่งหนีสิ เหอๆๆๆๆ

ต่อมาเมื่อได้สร้าง connect ขึ้นมา
ตามฟอร์มเลย ต่อได้ก็ส่ง SQL COmmand เข้าไป

$result=pg_query("SELECT * FROM admin WHERE username='admin' and password ='password'");

ส่งเสร็จก็ดึงผลลัพธ์ที่ได้กลับ
$row1=pg_fetch_array($result);
echo $row1[0];
echo $row1[1];

หรือ อีกวิธี
pg_exec("INSERT INTO userpquota (userid, printerid) VALUES ('admin2','passwords2')");

ขั้นตอนสุดท้าย ก็ปิด connect
pg_close($dbconn)



คำถาม
แล้ว pg_query กับ pg_exec มันต่างกันตรงไหน
คำตอบ
มันก็เหมือนกัน นั้นแหละ เพียงแต่ pg_exec เป็นชื่อ เก่า pg_query เป็นชื่อใหม่

คำถาม
แล้วทำให้ยุ่งยากทำไม
คำตอบ
ไม่ทราบครับ แต่คาดเดาว่าน่าจะทำให้เหมือนกับ MySQL มั้ง เพราะ ที่สังเกต ชื่อใหม่เกือบทั้งหมดจะคล้ายกับ MySQL

และสั้งเกตให้ดีๆ การใช้ PHP ติดต่อกับ DATABASE ไม่ว่าใช้อะไรจะเหมือนกันหมด ไม่ว่า MySQL,PostgreSQL,ORACLE, OBDC

คือ
1. สร้าง connect
2. ส่ง SQL COMMAND
3. ถ้ามีค่ากลับมาก็รับมาประมวลผลต่อ เช่น ส่ง SELECT เข้าไป
4. ปิดการเชื่อมต่อ

ส่วนที่สำคัญที่สุดคือ การ ออกแบบฐานข้อมูล ไม่ใช้ ออกแบบการเรียกใช้
ฐานข้อมูลแต่ละตัวมีข้อดี ข้อด้อยไป คนละอย่างกัน เช่น ตัวนี้ เสถียรแต่ช้า ตัวนี้ เร็วสุดๆ แต่ล่มบ่อย ตัวนี้ไม่เร็วไม่ช้า แต่รับประทาน RAM แบบสุดยอด
ตัวนี้ ทำวงานเร็วโคตร แต่พอ record เกินล้าน อืด โคตร แบบนี้ก็ต้องออกแบบระบบ search ใหม่แล้วแหละครับ และออกแบบระบบการเก็บข้อมูลใหม่ด้วยว่าจะเก็บอย่างไร

ดังนั้น คุณจะใช้ตัวไหนก็ต้องดูงบประมาณ ความจำเป็นในการใช้ จำนวนข้อมูลในอนาคต สัก 5 ปี เมื่อได้มาแล้วก็ต้องออกแบบระบบสืบค้น ออกแบบฐานข้อมูล (ระบบสืบค้นจะสำคัญกว่านะครับ แบบที่บอก พอข้อมูลมากๆ ถ้าระบบสืบค้นไม่ดี DB จะอืดอย่างมากเลย)

ที่สำคัญอย่างกพื้นที่ HDD ให้มากนัก อย่าลืมว่า HDD ถูกกว่า แรม นะครับ
ซึ่ง การที่คุณจะเอาข้อมูลมาไว้ใน RAM จะทำให้การสืบค้นเร็วขึ้น แต่จะทำให้เปลือง RAM มากๆ แต่ยอมให้ช้าลงมาหน่อย แต่ก็ประหยัด RAM ไปได้เยอะ จะดีกว่า แต่ผมไม่ชอบอย่างนึงที่ ความเร็วและ พื้นที่ในการใช้ ไปด้วยกันไม่ได้ อยากให้โปรแกรมเร็วขึ้นก็ต้อง ยอมเสียพื้นมากขึ้น เช่น กำหนดขนาดตัวแปร 3 ตัว a,b,c เพื่อเอามาทำงานง่ายคือ a+b=c ระหว่าง กำหนดแบบ integer ซึ่งใช้พื้นที่เพียง 2 Byte (16 Bit) 3 ตัวก็ 6 Byte เท่านั้น แต่เชื่อปล่าวครับว่ามันทำงานช้ากว่า กำหนดตัวแปรไว้ 4 Byte (32 Bit) 3 ตัวก็ 12 Byte เหตุผลง่ายๆ ก็คือ windows เราเป็นแบบ 32 Bit ไงครับ

ครั้งต่อไป จะนำเอา PHP & ORACLE และ PHP & OBDC มานำเสนอต่อครับ

บันทึกนี้เขียนที่ GotoKnow โดย 

หมายเลขบันทึก: 22888
เขียน:
แก้ไข:
ดอกไม้: 1
ความเห็น: 3
อ่าน:
สัญญาอนุญาต: สงวนสิทธิ์ทุกประการ

ความเห็น (3)

แบบว่ากำลังเขียนเวบติดต่อ Postgresql ค่ะ แล้วตอนนี้มีปัญหาค่ะ

คือว่าเขียนฟอร์มให้อัพโหลดไฟล์ไปเก็บในฐานข้อมูล แล้วจะมีอีกpageนึงdownloadไฟล์ออกมาดู

ปรากฏว่า เมื่ออัพโหลดไปแล้ว ตอนจะดาวน์โหลด กลายเป็นภาษาต่างดาวอะค่ะ

ไม่ทราบว่าเป็นเพราะอะไร แต่สามารถเปิดแอพลิเคชั่นได้นะค่ะ แต่จะอ่านไฟล์ไม่ได้

 

ตอนอัพโหลดมีการ encrypt แล้วค่ะ

$file1 = file_get_contents($file['tmp_name']);
$file1 = pg_escape_bytea($file1);

ในส่วนดาวน์โหลดก็

$file_data = pg_unescape_bytea($data);

เป็นเพราะอะไรค่ะ รบกวนตอบด้วย

ที่ว่า้เป็นภาษาต่างดาว

เคยตรวจสอบในฐานข้อมูลไหมครับว่ามันเก็บเป็นภาษาอะไร คาดว่าน่าจะเกิดตัว web server เองมากกว่าครับที่ encode เป็นภาษาอื่น

ไม่ทราบว่าพอจะมีตัวอย่างโค๊ดฟอร์มที่รับข้อมูลไปเก็บในฐานอย่างง่าย ๆ บ้างไม๊อ่ะคับ

เพิ่งลองศึกษา postgres เลยอยากได้มาเป็นแนวทางคับ

รบกวนยกตัวอย่างด้วยคับ .. ขอบคุณคับ