หัวข้อ: ใครใช้ PHP PDO อยู่แนะนำหน่อยครับ เริ่มหัวข้อโดย: JumDaiDee ที่ 30 ตุลาคม 2014, 21:57:58 ผมลองฝึกเขียนดู แต่มีที่ติดปัญหาคือ ตอน select 2 ขั้นนี่แหละครับ
ผมจะ select คือ สุนัขที่มีสีดำทั้งหมด mysqli ปกติ ผมเขียนแบบนี้ อ้างถึง $db = new db() $db->connect_db(); $sql1 = $db->mysqli->query("select * from color); while($rs1 = $sql1->fetch_assoc()){ print "$rs1['name']"; $sql2 = $db->mysqli->query("select * from dogs where color_id = '".$rs1['id']."'"); while($rs2 = $sql2->fetch_assoc()){ print "$rs2['name']"; } } pdo ผม select ได้แค่ชั้นเดียว นั่งทำทั้งวันแล้วครับ อ้างถึง $sql = "select * from color"; $query = $this->db->prepare($sql); $query->execute(); return $query->fetchAll(); แนะนำด้วยนะครับ ผลลัพธ์ที่ต้องการครับ select ออกมาแบบน้ครับ สุนัขสีดำ 1. ชื่อสุนัข 2. ชื่อสุนัข 3. ชื่อสุนัข สุนัขสีส้ม 1. ชื่อสุนัข 2. ชื่อสุนัข 3. ชื่อสุนัข หัวข้อ: Re: ใครใช้ PHP PDO อยู่แนะนำหน่อยครับ เริ่มหัวข้อโดย: narincr ที่ 30 ตุลาคม 2014, 22:20:52 ถ้าเป็นผม จะใช้ตารางที่ 2 เป็นหลักครับ คือตารางชื่อสุนัขเลย เช่น
TABLE : COLOR COLOR_ID | COLOR_NAME 1 | YELLOW 2 | BLUE 3 | BLACK ########################## Table : DOG DOG_ID | DOG_NAME | DOG_COLOR_ID 1 | DOG 001 | 1 2 | DOG 002 | 1 3 | DOG 003 | 2 4 | DOG 004 | 2 5 | DOG 005 | 3 6 | DOG 006 | 3 Sql Statement : select DOG.DOG_ID,DOG.DOG_NAME,DOG.DOG_COLOR_ID COLOR.COLOR_NAME FROM DOG inner join COLOR on DOG.DOG_COLOR_ID=COLOR.COLOR_ID ORDER BY COLOR.COLOR_ID ASC ตารางที่จะได้คือ DOG_ID | DOG_NAME | DOG_COLOR_ID | COLOR_NAME 1 | DOG 001 | 1 | YELLOW 2 | DOG 002 | 1 | YELLOW 3 | DOG 003 | 2 | BLUE 4 | DOG 004 | 2 | BLUE 5 | DOG 005 | 3 | BLACK 6 | DOG 006 | 3 | BLACK ============================================== ปล. อาจจะไม่ตรงกับคำตอบ แต่เสริมในการเรียกใช้ Sql Statment ให้จบภายในคำสั่งเดียว ระบบจะ Query เร็วกว่ามากครับ แต่คำตอบในส่วนของ pdo_mysql นั้นไม่เคยใช้ครับ ขอบคุณครับ หัวข้อ: Re: ใครใช้ PHP PDO อยู่แนะนำหน่อยครับ เริ่มหัวข้อโดย: Queue ที่ 30 ตุลาคม 2014, 23:06:12 ใช้ Eloquent อยู่ง่ายมากๆ
User::find(1); เท่ากับ "select * from users where id = 1"; http://laravel.com/docs/4.2/eloquent หัวข้อ: Re: ใครใช้ PHP PDO อยู่แนะนำหน่อยครับ เริ่มหัวข้อโดย: goldxp ที่ 30 ตุลาคม 2014, 23:32:12 pdo ก็ทำได้ครับ โดยใช้หลักการเดียวกันแบบนี้ครับ
โค๊ด: $stmt = $db->query('select * from color'); หัวข้อ: Re: ใครใช้ PHP PDO อยู่แนะนำหน่อยครับ เริ่มหัวข้อโดย: ball6847 ที่ 30 ตุลาคม 2014, 23:38:47 ใช้โครงสร้างตาม narincr แนะนำครับ สามารถ query ได้แบบนี้
โค๊ด: <?php กรณีไม่มี parameter binding ใช้ PDO::query() (http://php.net/manual/en/pdo.query.php) ก็สะดวกดีครับ แต่ถ้ามีใช้ prepare ตามเดิมดีแล้วครับ หัวข้อ: Re: ใครใช้ PHP PDO อยู่แนะนำหน่อยครับ เริ่มหัวข้อโดย: kanin03 ที่ 31 ตุลาคม 2014, 01:48:24 ขอถามนอกเรื่องของ จขกท. นะครับ
ทำไมถึงไม่ใช้ join อะครับ (อันนี้ผมไม่ทราบจริงๆว่ามันต่างกันยังไง performance หรือปล่าวครับ) :wanwan017: หัวข้อ: Re: ใครใช้ PHP PDO อยู่แนะนำหน่อยครับ เริ่มหัวข้อโดย: JumDaiDee ที่ 31 ตุลาคม 2014, 06:15:06 ขอถามนอกเรื่องของ จขกท. นะครับ ทำไมถึงไม่ใช้ join อะครับ (อันนี้ผมไม่ทราบจริงๆว่ามันต่างกันยังไง performance หรือปล่าวครับ) :wanwan017: ผมลอง join แล้วมันออกมา 1:1 ครับ ประมาณว่าแบบนี้ครับ สุนัขสีดำ 1. ชือสุนัข สุนัขที่ส้ม 1.ชื่อสุนัข อยากได้รายการในหมวดหมู่ทั้งหมดครับ ประมาณนี้ครับ สุนัขสีดำ 1. ชื่อสุนัข 2. ชื่อสุนัข สุนัขสีส้ม 1. ชื่อสุนัข 2. ชื่อสุนัข 3. ชื่อสุนัข ผมยังเขียนไม่เก่ง ก็เลยเอามาปรึกษา บอร์ดดูครับ หัวข้อ: Re: ใครใช้ PHP PDO อยู่แนะนำหน่อยครับ เริ่มหัวข้อโดย: JumDaiDee ที่ 31 ตุลาคม 2014, 06:17:55 pdo ก็ทำได้ครับ โดยใช้หลักการเดียวกันแบบนี้ครับ โค๊ด: $stmt = $db->query('select * from color'); ผมทำได้แล้ว ตามนี้พี่ goldxp ครับ +1 สำหรับน้ำใจที่แนะนำนะครับ ขอบคุณพี่ๆ มากกว่าที่มาให้คำแนะนำ หัวข้อ: Re: ใครใช้ PHP PDO อยู่แนะนำหน่อยครับ เริ่มหัวข้อโดย: JumDaiDee ที่ 31 ตุลาคม 2014, 06:32:06 ขอถามอะไรต่อ หน่อยนะครับ
การรับค่า binValue มันดียังไงครับ ไปอ่านมาเค้าบอกแค่การรับค่าของ pdo อยากทราบข้อดีขอเสีย ครับ $stmt2 = $db->prepare('select * from dogs where color_id = :id'); $stmt2->bindValue(':id', $row['id']); แล้วถ้าผมเขียนแบบนี้ จะเกิดของเสียอะไรครับ $stmt2 = $db->prepare('select * from dogs where color_id = $row['id']'); เอาค่า $row['id'] ยัดใส่เลย จะไม่ต้องเขียนหลายที ผมส่งสัยครับ :wanwan031: หัวข้อ: Re: ใครใช้ PHP PDO อยู่แนะนำหน่อยครับ เริ่มหัวข้อโดย: nagis ที่ 31 ตุลาคม 2014, 20:48:38 ลองศึกษาพวก one to one , one to many , many to many ดู
หัวข้อ: Re: ใครใช้ PHP PDO อยู่แนะนำหน่อยครับ เริ่มหัวข้อโดย: MapTwoZa ที่ 31 ตุลาคม 2014, 20:55:07 ขอถามอะไรต่อ หน่อยนะครับ การรับค่า binValue มันดียังไงครับ ไปอ่านมาเค้าบอกแค่การรับค่าของ pdo อยากทราบข้อดีขอเสีย ครับ $stmt2 = $db->prepare('select * from dogs where color_id = :id'); $stmt2->bindValue(':id', $row['id']); แล้วถ้าผมเขียนแบบนี้ จะเกิดของเสียอะไรครับ $stmt2 = $db->prepare('select * from dogs where color_id = $row['id']'); เอาค่า $row['id'] ยัดใส่เลย จะไม่ต้องเขียนหลายที ผมส่งสัยครับ :wanwan031: จะทำอย่างงั้นก็ได้ แต่แนะนำว่าให้ใช้การ binding เสมอครับ เพราะ 1. การ binding คือการป้องกัน sql injection ครับ 2. อ่าน query ง่ายกว่าครับ ถึงแม้จะชัวร์แค่ไหนว่าไม่โดน sql injection ก็ควรทำ binding อยู่ดีครับ หัวข้อ: Re: ใครใช้ PHP PDO อยู่แนะนำหน่อยครับ เริ่มหัวข้อโดย: JumDaiDee ที่ 01 พฤศจิกายน 2014, 11:47:23 ขอบพระคุณพี่ๆ ที่แนะนำให้ความรู้ครับ
:wanwan020: :wanwan020: |