พบกับบทความเกี่ยวกับคอมพิวเตอร์และ programming ได้ที่ http://articles.modoeye.com
PHP development / PHP ไม่สามารถใช้คำสั่ง CREATE TEMPORARY TABLE ไม่ได้เหรอครับ
มะเด่นศรี
มะเด่นศรี
Thu 6 Dec 2007 16:49:29

คือผมต้องการสร้าง TEMPORARY TABLE โดยใช้ PHP น่ะครับ ปัญหาที่ผมเจอคือ ผมรันคำสั่ง SQL จาก phpMyAdmin โดยใช้คำสั่ง

CREATE TEMPORARY TABLE ex_tmp_table ( ID int, Name char(100) )

พอ Query แล้วมันแจ้งว่า "ทำคำค้นเสร็จเรียบร้อยแล้ว (คำค้นใช้เวลา 0.0128 วินาที)" ไม่มี Error ใดๆ แต่พอผม Query โดยใช้คำสั่ง

SELECT * FROM ex_tmp_table

มันแจ้งกลับมาว่าไม่มี ตาราง ex_tmp_table นี้ในฐานข้อมูลแบบนี้ครับ
#1146 - Table 'naturnova_mlm.ex_tmp_table' doesn't exist

ก็เลยงงครับ ลองคิดดูว่ามาเป็นที่ สิทธิ์ หรือเปล่าก็เลยลองเช็คดู ก็ไม่น่าจะใช่ คือผมใช่ คือผมลองรันคำสั่งสร้างตารางธรรมดาดูมันก็ได้ตามปกติคือ

CREATE TABLE ex_tmp_table ( ID int, Name char(100) )

มันก็สร้างได้ ผมใช้ phpMyAdmin โดยใช้ user root แล้ว (ผมรันที่เครื่องของตัวเองน่ะครับ ใช้ AppServ V.2.4.9)

แต่ผมลอง query ที่โปรแกรม MySQL ตรงๆเลยน่ะครับ มันก็สร้าง TEMPORARY TABLE ได้ไม่มีปัญหา โดยใช้คำสั่งเดิม

CREATE TEMPORARY TABLE ex_tmp_table ( ID int, Name char(100) )

ผมใช้ navicat น่ะครับเป็นตัวจัดการ ก็เลยไม่แน่ใจว่า Script PHP ไม่สามารถรัน SQL Command " CREATE TEMPORARY TABLE "

หรือว่าผมต้องไป Config ในส่วนใดบ้างครับ เพราะว่าผลลองเขียนโปรแกรมเป็น php แล้วก็ไม่ได้ หรือจะรันใน phpMyAdmin ก็ไม่ได้ครับ
ขอบพระคุณครับ

webmaster
webmaster
Sun 9 Dec 2007 13:11:51
Temporary Table จะมีเห็นตราบที่ connection นั้นๆยังอยู่ครับ ซึ่งถ้า connection session นั้นๆถูกตัดลงก็จะโดนทำลายไปด้วยครับ ไม่ทราบว่าใช้ temporary table เพื่อการใดหรือครับ
มะเด่นศรี
มะเด่นศรี
Mon 10 Dec 2007 08:52:52

คือผมทำระบบ mlm (ขายตรงน่ะครับ เหมือน Amway) คือระบบที่ผมทำอยู่นี้คือ แสดงจำนวน Downline ในแต่ละชั้นของสมาชิกคนนั้นๆ เช่น สมมุติว่าผม Login ผ่านหน้าเว็บมาแล้วก็จะแสดง ดาวน์ไลน์ทั้งหมดของผม เช่น
= ชั้นที่ 1 มี
--> สมปอง
--> สมชาย
--> สมศรี
= ชั้นที่ 2 มี
--> อาทิตย์
--> อาคม
= ชั้นที่ 3 มี
--> กรองทิพย์
--> กรองสิน
คือว่าตอนนี้ผมเขียนคำสั่งต่างๆ ให้มันหาว่า เรามี Downline ทั้งหมดกี่ชั้น? และแต่ละชั้นมีทั้งหมดกี่คน? ใครบ้าง?
ที่นี้ผมเขียนพวกนี้ได้แล้ว แต่ผมต้องการที่จะพักข้อมูลพวกนี้ไว้ใน Temporary table ต่างหาก เพื่อที่จะนำไปใช้ต่อชั่วคราว เช่นอาจจะนำไปคำนวณหา รายได้แต่ละชั้น ฯลฯ *----- ที่ตอนนี้ผมทำให้มัน Create Table จริงๆเลยซึ่งไม่ใช่ Temp table น่ะครับ มันทำให้ Database บวมโดยใช่เหตุ !

งั้นผมคงต้องเปลี่ยน Solution ในการพักข้อมูลของผลแหล่ะครับ ผมคิดว่าจะนำข้อมูลทั้งหมดที่ Query หา Downline ทั้งหมดกี่ชั้น? และแต่ละชั้นมีทั้งหมดกี่คน? ใครบ้าง? มาเก็บลง Table จริงๆ ซึ่งไม่ใช่ Temporary Table
แล้วตอน Logout ค่อย DROP TABLE นั้นเอา **** -- แต่ผมมองว่า ตอนนี้ผมมี สมาชิก 5,000 กว่าคน งั้นมันต้องสร้างตาราง 5,000 ตารางแน่ๆเลย ---- กรรม

งั้นผมรบกวนถามอีกข้อน่ะครับ ผมจะใช้คำสั่ง เช็คว่ามี Table ที่ชื่อว่า downline_userid อยู่ใน Database นี้แล้วหรือยัง คือแบบนี้ครับผมจะเช็คว่า หากมีการสร้างตาราง downline_userid นี้แล้ว ผมก็จะ DROP TABLE นั้นก่อนน่ะครับ ผมควรใช่คำสั่งอย่างไรดีครับ

ขอบพระคุณครับ

webmaster
webmaster
Mon 10 Dec 2007 09:44:12
ถ้าต้องการให้ drop ก่อนก็สั่ง drop ได้เลยมีไม่มีก็ได้ผลเหมือนกันแล้วค่อยสร้างใหม่

ถ้าจะเอาไว้แสดงผลข้อมูล ไม่ลองใช้ view ใน mysql 5.1 ล่ะครับน่าจะง่ายกว่าเยอะเลย
http://dev.mysql.com/doc/refman/5.1/en/create-view.html
มะเด่นศรี
มะเด่นศรี
Tue 11 Dec 2007 08:15:45
ขอบพระคุณครับ
Reply
Name:
E-mail:
Home | Services | Forum | Classified | Directories | Support | Contact
ATOM feed RSS 0.9 feed RSS 1.0 feed RSS 2.0 feed
Copyright © 2005 - 2007 Modoeye.com, All Rights Reserved.
Disclaimer | Privacy policy | Term of Use | Term of Services
Valid XHTML Valid CSS! PHP: Hypertext Preprocessor MySQL database Apache Powered! FreeBSD Power to serve
Modoeye Sitemap Client login