ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingมีวิีธี add ฐานข้อมูลยังไงไม่ให้มันซ้ำอะ ใน mysql
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: มีวิีธี add ฐานข้อมูลยังไงไม่ให้มันซ้ำอะ ใน mysql  (อ่าน 14680 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
iamnewbies
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 28
ออฟไลน์ ออฟไลน์

กระทู้: 9,635



ดูรายละเอียด
« เมื่อ: 07 เมษายน 2007, 23:49:22 »

กำลังลองทำ mysql ทำ database ของ keyword รวม  เพิ่งสมัคร wordtracker  1 เดือน แล้วเอามาใส่

มีวิธียังไงที่จะ add ลงไปไม่ให้มันซ้ำนะ

เพราะลองทำแล้ว มันก็ run recoard ที่บันทึกไปเรื่อยๆ แต่มันซ้ำนี่สิ
บันทึกการเข้า

ุอิอิ  พลุบๆโพล่ๆ  เข้าๆออกๆ เสียวๆ
Tee++;
โปรแกรมเมอร์ จอหงวน
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 79
ออฟไลน์ ออฟไลน์

กระทู้: 1,861



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 08 เมษายน 2007, 01:45:42 »

เอา Field ที่จะไม่ให้ซ้ำตั้งเป็น unique แล้วตอน insert ใช้คำสั่ง ignore ลงไปเพื่อไม่ให้ Error

โค๊ด:
insert ignore into table ....


หรือ ถ้าจะให้ข้อมูลใหม่ลงใช้คำสั่ง

โค๊ด:
replace into table ....
บันทึกการเข้า

tony
เกี๊ยวหวาน
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 6
ออฟไลน์ ออฟไลน์

กระทู้: 4,079



ดูรายละเอียด
« ตอบ #2 เมื่อ: 08 เมษายน 2007, 01:58:46 »

อ้างจาก: "Tee++;"
เอา Field ที่จะไม่ให้ซ้ำตั้งเป็น unique แล้วตอน insert ใช้คำสั่ง ignore ลงไปเพื่อไม่ให้ Error

โค๊ด:
insert ignore into table ....


หรือ ถ้าจะให้ข้อมูลใหม่ลงใช้คำสั่ง

โค๊ด:
replace into table ....


เก่งจัง  Tongue
บันทึกการเข้า

ไม่ค่อยว่างมาดูเท่าไร แต่หัวใจยังกิ๊ดตึ๋ง
iamnewbies
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 28
ออฟไลน์ ออฟไลน์

กระทู้: 9,635



ดูรายละเอียด
« ตอบ #3 เมื่อ: 08 เมษายน 2007, 02:38:00 »

อ้างจาก: "Tee++;"
เอา Field ที่จะไม่ให้ซ้ำตั้งเป็น unique แล้วตอน insert ใช้คำสั่ง ignore ลงไปเพื่อไม่ให้ Error

โค๊ด:
insert ignore into table ....


หรือ ถ้าจะให้ข้อมูลใหม่ลงใช้คำสั่ง

โค๊ด:
replace into table ....



ขอบคุณครับ

จาลองทำดู

ผมมือใหม่ mysql  


I am newbies mysql
บันทึกการเข้า

ุอิอิ  พลุบๆโพล่ๆ  เข้าๆออกๆ เสียวๆ
ColdMoney
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 200
ออฟไลน์ ออฟไลน์

กระทู้: 12,622



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 08 เมษายน 2007, 08:56:31 »

อิอิ เก่งจัง ถ้าเป็นผม ก็คงเช็คก่อนอ่ะว่ามีข้อมูลอยู่อ่ะป่าว ถ้าซ้ำก็ไม่เขียนลงไป  :lol:  :lol:
บันทึกการเข้า

Tee++;
โปรแกรมเมอร์ จอหงวน
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 79
ออฟไลน์ ออฟไลน์

กระทู้: 1,861



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 08 เมษายน 2007, 11:31:56 »

เขิล  :oops:
บันทึกการเข้า

EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 321
ออฟไลน์ ออฟไลน์

กระทู้: 12,516



ดูรายละเอียด
« ตอบ #6 เมื่อ: 08 เมษายน 2007, 12:48:16 »

ไม่เคยรู้วิธีนี้เลย

ผมมักจะทำแต่

ทำ index เป็น auto increase

แต่ค่าอินเด็กก็ไม่ส่งไป มันนยัดให้เองอะไรแบบนั้น *-*
บันทึกการเข้า

iamnewbies
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 28
ออฟไลน์ ออฟไลน์

กระทู้: 9,635



ดูรายละเอียด
« ตอบ #7 เมื่อ: 08 เมษายน 2007, 12:52:35 »

อันแรก ทำเป็น auto increase อยู่แล้วครับ เพราะเป็น index

ใน table มีแค่ 2 แถว

แค่ id = เป็น auto increase  ใช้ทำเป้น index

และก็ อีกอันเป็น ข้อมูล data
บันทึกการเข้า

ุอิอิ  พลุบๆโพล่ๆ  เข้าๆออกๆ เสียวๆ
iamnewbies
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 28
ออฟไลน์ ออฟไลน์

กระทู้: 9,635



ดูรายละเอียด
« ตอบ #8 เมื่อ: 08 เมษายน 2007, 12:53:44 »

อ้างจาก: "Tee++;"
เอา Field ที่จะไม่ให้ซ้ำตั้งเป็น unique แล้วตอน insert ใช้คำสั่ง ignore ลงไปเพื่อไม่ให้ Error

โค๊ด:
insert ignore into table ....


หรือ ถ้าจะให้ข้อมูลใหม่ลงใช้คำสั่ง

โค๊ด:
replace into table ....



ใช้ได้ผลครับ

ผมใช้อันนี้

โค๊ด:
insert ignore into table ....



กว่าจะทำได้ error เพียบเลย

มั่วๆๆ เอา

mysql เจ้งไปหลายรอบแ้ล้ว เพราะเขียนโปรแกรมวนลูป จนมันไม่หยุด 5555
บันทึกการเข้า

ุอิอิ  พลุบๆโพล่ๆ  เข้าๆออกๆ เสียวๆ
Tee++;
โปรแกรมเมอร์ จอหงวน
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 79
ออฟไลน์ ออฟไลน์

กระทู้: 1,861



ดูรายละเอียด เว็บไซต์
« ตอบ #9 เมื่อ: 08 เมษายน 2007, 13:44:58 »

จริงๆ การจัดการข้อมูลที่ซ้ำซ้อนยังมีอีกหลายวิธี อีก วิธีที่ผมว่า Work More คือการ Add ข้อมูลลงใน Table ทั้งหมด ยังไม่ต้องสนข้อมูลซ้ำ จากนั้นสร้างตาราง Temporary ขึ้นมาเช่นแล้วเอาข้อมูลมายัดลงไปแบบนี้

โค๊ด:
CREATE TABLE Temporary SELECT DISTINCT * FROM Oldtable


จากนั้นก็ลบตาราง Oldtable แล้วแก้ชื่อตาราง Temporary ซะ

โค๊ด:
ALTER TABLE Temporary RENAME Oldtable


MySQL จริงๆ มีลูกเล่นเพียบเลยนะ เป็น Database ที่ดีใช้ได้ไม่น้อยน่า Oracle เลยทีเดียว จะเสียตรงเรื่องการจัดการข้อมูลเยอะนี่แหละที่สู้ไม่ได้
 Tongue
บันทึกการเข้า

myong1
สมุนแก๊งเสียว
*

พลังน้ำใจ: 33
ออฟไลน์ ออฟไลน์

กระทู้: 569



ดูรายละเอียด
« ตอบ #10 เมื่อ: 11 เมษายน 2007, 19:07:58 »

ตัว php ผมไม่รู้นะครับ

ถ้าเป็น .net มี error แล้วข้ามไป กับเช็คโดยใช้ select clause

ใช้ select เช็คจะเร็วกว่าครับ ยิ่งถ้าปรับ field ให้มี index ด้วยจะเร็วกว่าแน่นอนครับ

แต่ถ้าไม่ได้ช้าอะไรมากมาย ก็ไม่ต้องซีเรียสครับ
บันทึกการเข้า
ploiro
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 74
ออฟไลน์ ออฟไลน์

กระทู้: 1,752



ดูรายละเอียด เว็บไซต์
« ตอบ #11 เมื่อ: 14 เมษายน 2007, 11:02:09 »

แหะๆผ่านมาอ่านเจอกาทู้นี้ ได้ความรู้ดีๆเลย

ขอบคุณ คุน Tee++ มากนะ

ผมเซฟเกบไว้เปนความรู้แระ

แต่สำหรับผม

เวลาป้องกันข้อมูลซ้ำกัน

แบบผมทำเวบอัพโหลด

ก็จะใช้การนำไอดีมาต่อหน้าชื่อไฟล์เดิมซะ

แบบว่า

$sql="Insert อะไรก้อว่าไป";
$r=mysql_query($sql);
$d=mysql_insert_id();

แล้วก้อนำมันมารวมเปนชื่อใหม่ซะ

$filename2="$id$filename";

แล้วค่อยอัพเดทมันอีกที

แหะๆ
บันทึกการเข้า

หน้า: [1]   ขึ้นบน
พิมพ์