ผมเขียน PDO แบบนี้จะได้เรื่องมั้ยครับ ?

เริ่มโดย dekmv, 13 กันยายน 2013, 17:31:53

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

iLhay

#20
อ้างถึงจาก: ossytong ใน 14 กันยายน 2013, 21:19:52
อ้างถึงจาก: MapTwoZa ใน 14 กันยายน 2013, 20:47:01
อ้างถึงจาก: ossytong ใน 14 กันยายน 2013, 18:10:49
ตัว Laravel นี่ข้างในมี Doctrine อยู่แล้วนะครับ มันเอา Doctrine  มาใช้ เข้าใจว่ามันเอามาใช้ ใน Eloquent

ตอน  Update Composer เห็น แพคเกจ Doctrine บ่อยๆ เลยไปนั่งแกะดู ก็เข้าใจว่า มันเอาใช้

ส่วนของการออกแบบ ฐานข้อมูของ Laravel ก็มี Pattern อยู่ครับ เข้าใจว่ามีส่วนคล้าย Doctrine

ใช่ครับ แต่ไม่ได้เอาส่วนของ doctrine orm มา

doctrine มี 3 โปรเจคย่อยข้างในคือ doctrine common, doctrine database abstract layer แล้วก็ doctrine orm

เหมือนเค้าทำมาแบบว่า ถ้าไม่ชอบ doctrine orm ก็เอาแค่ common + database abstract layer ไปใช้


ซึ่งส่วนอื่นของ doctrine มันมีเจ๋งๆเยอะนะครับ
บาง class ไม่เกี่ยวกับ database ผมยังเอามาใช้เลย อย่างเช่นพวก array collection, cache เป็นต้น

ครับ ขอบคุณมากครับได้รู้เพิ่มเยอะเลย ผมก็ไม่เคยใช้  doctrine เลย ผมชอบ อ่าน Comment ท่านมาก ดูรู้เลยว่าผ่านงาน ผ่านประสบการณ์มาเยอะจริง  :wanwan017: :wanwan017:

ถ้ามัน "หลับ + กิน + เล่นเกมส์" น้อยกว่านี่ซักครึ่งนึง ป่านนี้เขียนโปรแกรมขายรวยแล้วครับ ผมบอกเลย  :wanwan004:  :wanwan004:  :wanwan004:
[direct=https://bangmod.cloud/wordpress-hosting/]Wordpress Hosting

[/direct]
[direct=https://bangmod.cloud/wordpress-hosting/]Wordpress Hosting[/direct] เริ่มต้นปีละ 790 บาท NVMe SSD เร็ว 9000MB/s เร็วกว่านี้ไม่มีอีกแล้ว
[direct=https://bangmod.cloud/cloud-server]Cloud Server[/direct] เริ่มต้นเพียงเดือนละ 159 บาท พร้อมใช้ภายใน 1 นาที ผ่านระบบอัตโนมัติมีทั้ง Linux / Windows / DirectAdmin
สอบถามข้อมูลและแจ้งปัญหา 02-105-4417 ตลอด 24 ชั่วโมง

ossytong

อ้างถึงจาก: vii ใน 15 กันยายน 2013, 02:16:45
อ้างถึงจาก: ossytong ใน 14 กันยายน 2013, 19:21:42
อ้างถึงจาก: tekub ใน 14 กันยายน 2013, 19:16:51
ลอง framework ง่ายๆ อย่าง codeigniter ดูสิครับ ใช้ง่ายมาก ไม่ต้องมาเริ่มนับ 1 ใหม่

Codeigniter มันตายแล้วครับ...  ^^ คนทำ CI ย้ายมา Laravel แล้ว

อนาคตมันไม่มีแล้ว แล้ว CI3.0 ก็ไม่มีท่าทีจะมาเลย แล้วติดตามข่าวมันก็ไม่มีอะไรเด่นใน 3.0 เลยครับ

ปัจจุบันผมเจองาน CI ใน Project เก่าๆ แต่ งานใหม่ๆ เริ่มจาก Laravel หรือ Yii ซะเยอะ

ขออ้างอิงคำของ Phil Sturgeon
http://philsturgeon.co.uk/blog/2012/05/laravel-is-awesome

อ้างถึงEvery single framework goes through the same trouble that every single piece of software goes through: Change.

As a framework developer you are always met with two extremes:

    1.Change a lot
    2.Don't change

framework ที่จะสร้างปัญหาให้กับ developer คือ 1. มันมีการเปลี่ยนแปลงถี่เกินไป  2. มันไม่เปลี่ยนแปลงเลย
ผมได้ทดลองใช้ Laravel มาตั้งแต่ v.3 แม้จะพบคุณสมบัติที่น่าสนใจมากมาย แต่ว่ามันออกมาถี่เกิน แล้วเราก็ต้องมาศึกษาปรับแก้โค้ดกันบ่อยเกินไป
ไปๆมาๆมันจะคล้ายๆกับแฟชั่นไปแล้ว ที่ใส่แล้วก็ออกใหม่ก็ถอดกองเปลี่ยนเอารุ่นใหม่ๆมาใส่ไปเรื่อยๆ เหนื่อยเกินไปรึเปล่า(ผมคิดนะ)

framework มันเป็นเครื่องมือ มันไม่ควรออกถี่มากขนาดนั้น (3เวอร์ชั่นหลักในปีเดียว) ควรออกมาช้าๆหน่อย แบบพอดีๆ
เพราะโปรเจ็คหนึ่งๆ มันไม่ใช่ทำแปบๆเสร็จแล้วเสร็จเลยทิ้งเลย บางทีมันมีงาน maintenance อีก
ซึ่งของเวอร์ชั่นใหม่ๆมามันก็จะมีการแก้ bug ใน framework อยู่เราก็อยากจะเอามาใช้ให้มันเพิ่มความปลอดภัยกับโปรเจ็คของเรา
พอมันออกถี่ไปการตามอัพเดทเพิ่มความปลอดภัยก็จะไม่ค่อยอยากทำกันแล้ว ก็กลายเป็น maintenance แบบขอไปที

ส่วน CI นั้น ช่วงก่อนหน้าก็ถือว่าไม่ออกมาถี่เกินไป (ช่วง 2.0 เป็นต้นมา) ซึ่งกำลังดี แต่ว่าหลังๆมานี้มันดูช้าเกินไป แล้วก็ไม่มีแผนที่แน่ชัดว่า 3.0 จะออกเมื่อไหร่
จนปัจจุบันก็นึกเหมือนกันว่ามันอาจจะตายไปแล้วรึกำลังตาย เพราะมันยังมีคนคอยจัดการ pull request ใน github อยู่เรื่อยๆ แต่ไม่มีการแจ้งอะไรเลย

ถึงแม้อย่างนั้นก็ไม่ใช่ว่าเขาจะย้ายไปใช้ Laravel กันหมดนะครับ cms ระดับเทพของ Phil Sturgeon (Pyro CMS) ก็ยังคงใช้ CI อยู่ แม้จะเป็นรุ่น Pyro 3.0 dev ตัวล่าสุดที่เขาทำกันอยู่ก็ตาม
สาเหตุก็เพราะว่า ความจริงแล้วแม้ CI จะไม่มีลูกเล่นใหม่ๆมาให้ตื่นเต้นเร้าใจโปรแกรมเมอร์หลายๆคน แต่มันยังตอบสนองความต้องการในการเขียนงานได้เป็นอย่างดีอยู่ ทั้งความเร็ว ความปลอดภัย
ถ้าเมื่อไหร่ก็ตามโปรเจ็คที่เราทำนั้น CI ไม่สามารถสนองได้ ก็สมควรที่จะมองหาตัวอื่นที่ทำได้ และไม่ออกอัพเดทถี่เกินไป :)

เรื่องเปลี่ยนบ่อยเกินไปอันนี้เห็นด้วยเลยครับ แต่ CI มัน ในเรื่องความเร็ว(ในการ Dev)ผมมองว่า ไม่เลยครับ มันแทบไม่ต่างกับ HardCode เลย ในมุมผมอะนะครับ Active Record เอย อะไรเอย มันไม่ได้ช่วยขนาดนั้นเลย ยิ่งเทียบกับ Laravel และ Yii แล้ว คนละเรื่องเลย
รวมถึง การทำ UnitTest ด้วย ของ CI ผมก็ยังคิดว่าทำลำบากอยู่มากอยู่ ยิ่งเทียบกับ Laravel4 แล้ว ยิ่งคนละขั้วเลย แล้วการเปลี่ยนจาก 3.0 เป็น 4.0 ที่ต้องเปลี่ยนเร็วผมคิดว่ามันเป็นสิ่งที่ "จำเป็น" ต้องทำมากกว่า Core ของ 4.0 แข็งแกร่งมาก จน 3.0 มันดูไม่มีประโยชน์เลยที่จะต้องเก็บเอาไว้ จะแลกกับ ทำให้ 3.0 คนใช้เยอะขึ้นไปทำไม เอา 4.0 ลงเลยดีกว่า ประมาณนนี้ Laravel4 นี่ละที่ผมมองว่า มันเอาสู่ Cycel ที่ตาม Phil Sturgeon เขียนไว้ในบทความและ ไม่เปลี่ยนบ่อยเกินไป แล้วก็ ไม่ห่างหายนานเกินไป

ส่วน Pyro CMS ผมเคยเล่นอยู่พักนึง เข้าไปทำ Plugin เล่นอะไรเล่น อยู่พักใหญ่ แล้วไปดู Style Code เค้าด้วย สนุกดีครับ แต่สุดท้ายในุมุมผม ผมให้คะแนนว่า เป็นรอง  Wordpress และ Joomla ทุกกระบวนท่าครับ
แล้วมีข่าวอยู่พักนึงว่าจะเปลี่ยนมาใช้ Laravel สุดท้ายไม่ได้เปลี่ยน ผมมองว่า ไม่ใช่เพราะ เค้าอยากใช้ CI อยาก
แต่จำเป็นต้องใช้มากกว่า เพราะ คนที่เป็นลูกค้า PyroCms ล้วนเป็นสาย CI ทั้งนั้น ถ้าเปลี่ยนเป็น 3.0 เป็น Laravel ผมคิดว่า จะดูแปลกๆนะ เป็นการหักหลัง ลูกค้าชุดใหญ่เลย


dekmv

ผมมึนเลย ... แต่อยากรู้ กำลังศึกษาอยู่ครับผม ขอบคุณทุกท่านมากๆครับผม

aprompt22

กระทู้นี้เทพคุยกัน

ผมมาอ่าน......

..... นี่เราอ่อนด๋อย มากเลยอ่ะ  :P :'( :-X

แต่ก็ขอบคุณมากครับ
:wanwan017:

โลกนี้มีอะไรให้เราศึกษาอีกเยอะมากๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆ
[direct=https://www.roowai.com]รู้ไว้ดอทคอม[/direct] เกร็ดความรู้ สาระสุขภาพความงาม

dekmv

อ่อ ผมกำลังคิดอยู่เลยครับ ว่าผมจะเลือกศึกษาตัวไหนดี ... ขอบคุณมากครับผม

Amdroid

อ้างถึงจาก: ossytong ใน 15 กันยายน 2013, 03:09:32
อ้างถึงจาก: vii ใน 15 กันยายน 2013, 02:16:45
อ้างถึงจาก: ossytong ใน 14 กันยายน 2013, 19:21:42
อ้างถึงจาก: tekub ใน 14 กันยายน 2013, 19:16:51
ลอง framework ง่ายๆ อย่าง codeigniter ดูสิครับ ใช้ง่ายมาก ไม่ต้องมาเริ่มนับ 1 ใหม่

Codeigniter มันตายแล้วครับ...  ^^ คนทำ CI ย้ายมา Laravel แล้ว

อนาคตมันไม่มีแล้ว แล้ว CI3.0 ก็ไม่มีท่าทีจะมาเลย แล้วติดตามข่าวมันก็ไม่มีอะไรเด่นใน 3.0 เลยครับ

ปัจจุบันผมเจองาน CI ใน Project เก่าๆ แต่ งานใหม่ๆ เริ่มจาก Laravel หรือ Yii ซะเยอะ

ขออ้างอิงคำของ Phil Sturgeon
http://philsturgeon.co.uk/blog/2012/05/laravel-is-awesome

อ้างถึงEvery single framework goes through the same trouble that every single piece of software goes through: Change.

As a framework developer you are always met with two extremes:

    1.Change a lot
    2.Don't change

framework ที่จะสร้างปัญหาให้กับ developer คือ 1. มันมีการเปลี่ยนแปลงถี่เกินไป  2. มันไม่เปลี่ยนแปลงเลย
ผมได้ทดลองใช้ Laravel มาตั้งแต่ v.3 แม้จะพบคุณสมบัติที่น่าสนใจมากมาย แต่ว่ามันออกมาถี่เกิน แล้วเราก็ต้องมาศึกษาปรับแก้โค้ดกันบ่อยเกินไป
ไปๆมาๆมันจะคล้ายๆกับแฟชั่นไปแล้ว ที่ใส่แล้วก็ออกใหม่ก็ถอดกองเปลี่ยนเอารุ่นใหม่ๆมาใส่ไปเรื่อยๆ เหนื่อยเกินไปรึเปล่า(ผมคิดนะ)

framework มันเป็นเครื่องมือ มันไม่ควรออกถี่มากขนาดนั้น (3เวอร์ชั่นหลักในปีเดียว) ควรออกมาช้าๆหน่อย แบบพอดีๆ
เพราะโปรเจ็คหนึ่งๆ มันไม่ใช่ทำแปบๆเสร็จแล้วเสร็จเลยทิ้งเลย บางทีมันมีงาน maintenance อีก
ซึ่งของเวอร์ชั่นใหม่ๆมามันก็จะมีการแก้ bug ใน framework อยู่เราก็อยากจะเอามาใช้ให้มันเพิ่มความปลอดภัยกับโปรเจ็คของเรา
พอมันออกถี่ไปการตามอัพเดทเพิ่มความปลอดภัยก็จะไม่ค่อยอยากทำกันแล้ว ก็กลายเป็น maintenance แบบขอไปที

ส่วน CI นั้น ช่วงก่อนหน้าก็ถือว่าไม่ออกมาถี่เกินไป (ช่วง 2.0 เป็นต้นมา) ซึ่งกำลังดี แต่ว่าหลังๆมานี้มันดูช้าเกินไป แล้วก็ไม่มีแผนที่แน่ชัดว่า 3.0 จะออกเมื่อไหร่
จนปัจจุบันก็นึกเหมือนกันว่ามันอาจจะตายไปแล้วรึกำลังตาย เพราะมันยังมีคนคอยจัดการ pull request ใน github อยู่เรื่อยๆ แต่ไม่มีการแจ้งอะไรเลย

ถึงแม้อย่างนั้นก็ไม่ใช่ว่าเขาจะย้ายไปใช้ Laravel กันหมดนะครับ cms ระดับเทพของ Phil Sturgeon (Pyro CMS) ก็ยังคงใช้ CI อยู่ แม้จะเป็นรุ่น Pyro 3.0 dev ตัวล่าสุดที่เขาทำกันอยู่ก็ตาม
สาเหตุก็เพราะว่า ความจริงแล้วแม้ CI จะไม่มีลูกเล่นใหม่ๆมาให้ตื่นเต้นเร้าใจโปรแกรมเมอร์หลายๆคน แต่มันยังตอบสนองความต้องการในการเขียนงานได้เป็นอย่างดีอยู่ ทั้งความเร็ว ความปลอดภัย
ถ้าเมื่อไหร่ก็ตามโปรเจ็คที่เราทำนั้น CI ไม่สามารถสนองได้ ก็สมควรที่จะมองหาตัวอื่นที่ทำได้ และไม่ออกอัพเดทถี่เกินไป :)

เรื่องเปลี่ยนบ่อยเกินไปอันนี้เห็นด้วยเลยครับ แต่ CI มัน ในเรื่องความเร็ว(ในการ Dev)ผมมองว่า ไม่เลยครับ มันแทบไม่ต่างกับ HardCode เลย ในมุมผมอะนะครับ Active Record เอย อะไรเอย มันไม่ได้ช่วยขนาดนั้นเลย ยิ่งเทียบกับ Laravel และ Yii แล้ว คนละเรื่องเลย
รวมถึง การทำ UnitTest ด้วย ของ CI ผมก็ยังคิดว่าทำลำบากอยู่มากอยู่ ยิ่งเทียบกับ Laravel4 แล้ว ยิ่งคนละขั้วเลย แล้วการเปลี่ยนจาก 3.0 เป็น 4.0 ที่ต้องเปลี่ยนเร็วผมคิดว่ามันเป็นสิ่งที่ "จำเป็น" ต้องทำมากกว่า Core ของ 4.0 แข็งแกร่งมาก จน 3.0 มันดูไม่มีประโยชน์เลยที่จะต้องเก็บเอาไว้ จะแลกกับ ทำให้ 3.0 คนใช้เยอะขึ้นไปทำไม เอา 4.0 ลงเลยดีกว่า ประมาณนนี้ Laravel4 นี่ละที่ผมมองว่า มันเอาสู่ Cycel ที่ตาม Phil Sturgeon เขียนไว้ในบทความและ ไม่เปลี่ยนบ่อยเกินไป แล้วก็ ไม่ห่างหายนานเกินไป

ส่วน Pyro CMS ผมเคยเล่นอยู่พักนึง เข้าไปทำ Plugin เล่นอะไรเล่น อยู่พักใหญ่ แล้วไปดู Style Code เค้าด้วย สนุกดีครับ แต่สุดท้ายในุมุมผม ผมให้คะแนนว่า เป็นรอง  Wordpress และ Joomla ทุกกระบวนท่าครับ
แล้วมีข่าวอยู่พักนึงว่าจะเปลี่ยนมาใช้ Laravel สุดท้ายไม่ได้เปลี่ยน ผมมองว่า ไม่ใช่เพราะ เค้าอยากใช้ CI อยาก
แต่จำเป็นต้องใช้มากกว่า เพราะ คนที่เป็นลูกค้า PyroCms ล้วนเป็นสาย CI ทั้งนั้น ถ้าเปลี่ยนเป็น 3.0 เป็น Laravel ผมคิดว่า จะดูแปลกๆนะ เป็นการหักหลัง ลูกค้าชุดใหญ่เลย


เก็บไว้เลยครับ กระทู้นี้
Jelly Bean

ฉันไม่มีตัวตน

คนที่เขียนแบบฮาร์ดโค้ดมาก่อน อย่าเพิ่งใช้ class เดี๋ยวจะงงไปใหญ่ พวกตัวแปรก็พยายามเขียนให้เข้าใจจะได้ไม่งง อย่าง $dbHandle ควรจะเป็น $connect , $dbconnect , $connectdb, $dbcon , $condb

<?php
$username = 'root';
$password = 'xxxxxx;
$dbname = 'igen_goods';

//ถ้าโค้ด connect db ถูกต้องนะ ของเขียนอีกแบบ มันเขียนได้หลายแบบ
$connect = new PDO('mysql:host=localhost;dbname='.$dbname, $username, $password);

$sql = "SELECT * FROM ig_tag";
$stmt = $dbHandle->prepare($sql);
$stmt->execute();
       
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
     echo $row['tg_id'].'-'.$row['tg_title'].'-'.$row['tg_keyword'];
}

$connect = null;//mysql_close
?>

PDO Query เขียนได้หลายแบบ

=== Query ธรรมดา===
$sql = $connect->query("SELECT * FROM ig_tag");

while ($row = $sql->fetch(PDO::FETCH_ASSOC)) {
     echo $row['tg_id'].'-'.$row['tg_title'].'-'.$row['tg_keyword'];
}
$sql->closeCursor();//mysql_free_result

=== Query ธรรมดา===
$sql = $connect->prepare("SELECT * FROM ig_tag");
$sql->execute();
while ($row = $sql->fetch(PDO::FETCH_ASSOC)) {
     echo $row['tg_id'].'-'.$row['tg_title'].'-'.$row['tg_keyword'];
}
$sql->closeCursor();//mysql_free_result


=== PDO ล็อกอิน กัน SQL Injection===
$sql = $connect->prepare('SELECT * FROM member WHERE username = username AND password = :password');
$sql->execute(array(':username' => $_POST['username '],':password' => $_POST['password']));
$count = $sql->rowCount();
$sql->closeCursor();//mysql_free_result

if($count == '1'){
     ล็อกอินผ่าน แล้วไรท์ session หรือจะทำอะไรก็ว่าไป
}

=== PDO ล็อกอิน กัน SQL Injection===
$param = array(':username' => $_POST['username '],':password' => $_POST['password']);
$sql = $connect->prepare('SELECT * FROM member WHERE username = :username AND password = :password');
$sql->execute($param);
$count = $sql->rowCount();
$sql->closeCursor();//mysql_free_result

if($count == '1'){
     ล็อกอินผ่าน แล้วไรท์ session หรือจะทำอะไรก็ว่าไป
}

=== PDO GET ค่าจาก URL กัน SQL Injection===
$param = array(':topicid' => $_GET['topicid']);
$sql = $connect->prepare('SELECT * FROM member WHERE topicid= :topicid');
$sql->execute($param);

while ($row = $sql->fetch(PDO::FETCH_ASSOC)) {
     echo $row['tg_id'].'-'.$row['tg_title'].'-'.$row['tg_keyword'];
}
$sql->closeCursor();//mysql_free_result

=== PDO GET ค่าจาก URL กัน SQL Injection===
$sql = $connect->prepare('SELECT * FROM member WHERE topicid= :topicid');
$sql->execute(array(':topicid' => $_GET['topicid']));

while ($row = $sql->fetch(PDO::FETCH_ASSOC)) {
     echo $row['tg_id'].'-'.$row['tg_title'].'-'.$row['tg_keyword'];
}
$sql->closeCursor();//mysql_free_result

max30012540


dekmv

//PHP Data Objects (PDO)
   $username = 'root';
   $password = 'xxxxxxx';
   $dbname = 'igen_goods';
   
   $dbHandle = new PDO('mysql:host=localhost;dbname='.$dbname.';charset=utf8;',$username,$password,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
   $dbHandle->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   // always disable emulated prepared statement when using the MySQL driver
   $dbHandle->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
   //$dbHandle->exec("SET CHARACTER SET utf8");


//LIST ALL TAG
   public function listTag($dbHandle,$status,$start,$total){
      try{
          $stmt = $dbHandle->prepare('SELECT tg_id,tg_title,tg_keyword FROM ig_tag WHERE tg_status = ? LIMIT '.$start.','.$total);
          $stmt->execute(array($status));
         
         while($var = $stmt->fetch(PDO::FETCH_ASSOC)){include'html/tag-list-item.php';}
      }
      catch(PDOException $e){echo'ERROR:'.$e->getMessage();}
   }
   
   //REMOVE TAG
   public function removeTag($dbHandle,$tag_id){
      try{
          $stmt = $dbHandle->prepare('DELETE FROM ig_tag WHERE tg_id = ?');
          $stmt->execute(array($tag_id));
      }
      catch(PDOException $e){echo'ERROR:'.$e->getMessage();}
   }