 |
รบกวนดูคำสั้ง sql ในการแก้ไขข้อมูลลงฐานข้อมูลทีนะครับ |
|
 |
|
|
 |
 |
|
ถ้าไม่ได้ลองใช้พวก SUB SELECT ดูครับ
|
 |
 |
 |
 |
Date :
2013-03-04 20:29:10 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มีตัวอย่างไหมครับ
|
 |
 |
 |
 |
Date :
2013-03-04 21:05:25 |
By :
puldool |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อาจจะ error นะครับ ทุกครั้งเราต้องตรวจด้วย mysql_error() ครับ
$strSQL = "
UPDATE position LEFT JOIN ob ON position.idposition = ob.idposition
SET position.idposition='".$_POST["idposition"]."'
WHERE ob.idposition=position.idposition
";
if (!mysql_query($strSQL)) { // mysql_query() จะคืนค่ากลับมาเป็น false หากมี error
echo mysql_error(); // และอ่าน error message ได้จาก mysql_error()
}
|
 |
 |
 |
 |
Date :
2013-03-05 00:24:11 |
By :
cookiephp |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผมใส่เข้าไปด้วยแล้วนะครับ พอดีลืม เอามาให้ดูด้วย แก้ไปแก้มา ก็ยังไมได้อยู่ดีครับ บางทีแก้ๆไปก็มี error อยู่เหมือนกัน
Code (PHP)
$strSQL = "
UPDATE position LEFT JOIN ob ON position.idposition = ob.idposition
SET position.idposition='".$_POST["idposition"]."'
WHERE ob.idposition=position.idposition
";
$objQuery = mysql_query($strSQL);
if($objQuery)
{
echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0;URL=dpsearch.php\">";
}
else
{
echo "Error Save [".$strSQL."]";
}
คือหลักการที่ผม รู้ก็คือ การ update ข้อมูลที่เป็นฟิลด์ใดก็ได้ แต่ไม่ใช่ id
แต่ตัวอย่างที่ผมเคยเห็น เขาเอาค่า id หลักของตาราง มาดึงเพื่อแสดงข้อมูลและแก้ไขได้ ลองไม่ตั้งเป็น fk ก็ยังไม่ได้ งงสุดๆไปเลยครับ หรือความรู้ผมมันน้อยนิด
|
ประวัติการแก้ไข 2013-03-05 00:55:17 2013-03-05 00:55:35 2013-03-05 00:57:24 2013-03-05 00:58:53 2013-03-05 00:59:04 2013-03-05 00:59:33 2013-03-05 01:00:49 2013-03-05 01:02:29 2013-03-05 01:32:50
 |
 |
 |
 |
Date :
2013-03-05 00:53:13 |
By :
puldool |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไม่เอาแค่นี้สิครับ
echo "Error Save [".$strSQL."]";
ให้เป็นแบบนี้ด้วย จะได้รู้ว่าจริงๆ มัน error เพราะอะไร
echo mysql_error() . " *** " . $strSQL;
|
 |
 |
 |
 |
Date :
2013-03-05 01:18:15 |
By :
cookiephp |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ทำแบบพี่แล้วครับ มันไม่ออก error อะครับ
แต่ถ้าลองทำแบบมั่วๆ มันก็ขึ้นนะครับ
|
 |
 |
 |
 |
Date :
2013-03-05 01:29:01 |
By :
puldool |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองลันจาก sql ในการ select ดู
Code (PHP)
SELECT ob.idposition,position.idposition FROM ob
LEFT JOIN position ON ob.idposition = position.idposition
where position.idposition = 8100
ผลออกมาคือ

พี่ๆคนไหนเข้าใจเรื่องนี้ เมตตาผมทีนะครับ สุดๆจริงๆ
------แล้วแบบนี้ผมเข้าใจถูกไหมครับ
Code (PHP)
$strSQL = "UPDATE position
LEFT JOIN ob ON ob.idposition = position.idposition
SET position.idposition= '".$_POST["position"]." '"; ******************รอรับค่าจาก textbox ก่อนหน้า
WHERE position.idposition =ob.idposition ***************ตรวจสอบว่า TB ob กับ id มีค่า idposition ตรงกันหรือไม่ ถ้ามีข้อมูล ที่เป็น
123 กับ 123 เหมือนกัน
ถ้าใช่แล้วทำไมข้อมูลถึงไม่เปลี่ยนครับ ไม่ error ด้วย
|
ประวัติการแก้ไข 2013-03-05 01:52:33 2013-03-05 02:06:33 2013-03-05 02:06:49 2013-03-05 02:07:14 2013-03-05 02:07:38 2013-03-05 02:07:56 2013-03-05 02:12:02 2013-03-05 02:12:46 2013-03-05 02:16:30 2013-03-05 02:17:30 2013-03-05 02:17:39 2013-03-05 02:18:49 2013-03-05 02:23:24
 |
 |
 |
 |
Date :
2013-03-05 01:51:45 |
By :
puldool |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
SELECT ob.idposition,position.idposition FROM ob # อ่าน ob.idposition และ position.idposition จากตาราง ob
LEFT JOIN position ON ob.idposition = position.idposition # โดยรวมตาราง position เข้ามาด้วยหากแถวในตาราง ob และ position มีค่า idposition ที่ตรงกัน
where position.idposition = 8100 # และด้วยเงืือนไขที่ว่า idposition ในตาราง position เท่ากับ 8100
ดังนั้นมันถูกต้องแล้วครับ
ที่จะได้ข้อมูลออกมาแบบนั้น
|
 |
 |
 |
 |
Date :
2013-03-05 03:12:33 |
By :
cookiephp |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณครับ กำลังอ่านดู แต่สงสัยว่า ถ้าเอาค่า id หลักของแต่ละ ตาราง มาแก้ไข ทั้ง 2 ตารางพร้อมกัน ได้ไหมครับ
เพราะตั้วอย่างแก้แค่ข้อมูล อื่นภายในตาราง ไม่ได้แก้ไขฟิลด์ id(pk)
|
 |
 |
 |
 |
Date :
2013-03-05 03:40:46 |
By :
puldool |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ได้แล้วครับ ขอบคุณทุกท่านที่มี เมตตา แค่นี้แหละครับ แก้ทั้งวัน
แก้ทีเดียว 2 ตาราง 1 textbox โดยแก้ไข id ด้วย ขอบคุณมากๆๆครับ
Code (PHP)
$strSQL = "
UPDATE position, ob
SET ob.idposition= '".$_POST["idposition"]."' ,
position.idposition= '".$_POST["idposition"]."'
WHERE ob.idposition=position.idposition
AND ob.idposition = position.idposition
";
|
ประวัติการแก้ไข 2013-03-05 03:50:53 2013-03-05 03:51:32 2013-03-05 03:52:10 2013-03-05 03:52:21 2013-03-05 03:52:32 2013-03-05 03:53:28
 |
 |
 |
 |
Date :
2013-03-05 03:50:12 |
By :
puldool |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แบบง่ายสุดเลยครับ
อาจจะดูไม่สวยงาม ไม่ advanced แต่ได้ผลตามต้องการแน่นอนครับ
คือ UPDATE สองตารางพร้อมกัน
UPDATE `ob`, `position`
SET
`ob`.`idposition` = 789, # ค่าเดียวกัน
`position`.`idposition` = 789 # ค่าเดียวกัน
WHERE
`ob`.`position` = 77 # ค่าเดียวกัน
AND `position`.`position` = 77 # ค่าเดียวกัน
|
 |
 |
 |
 |
Date :
2013-03-05 03:51:47 |
By :
cookiephp |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
กำ ไปๆมาๆ ขึ้น
Duplicate entry '406' for key 1 ซะงัั้น
ตอนแรกบันทึกซ้ำๆได้ ไปๆมาไม่ได้ -*-
|
ประวัติการแก้ไข 2013-03-05 04:13:38 2013-03-05 04:14:24
 |
 |
 |
 |
Date :
2013-03-05 04:09:15 |
By :
puldool |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณครับ อาการ หายไปละ เดี๋ยวลองดูเรื่อยๆ เพราะว่าจำเป็นต้องแก้ไข id ในภายหลังครับขอบคุณครับ
|
 |
 |
 |
 |
Date :
2013-03-05 04:17:18 |
By :
puldool |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เรื่องของ duplicate น่ะครับ แก้แล้วตอนแรกหาย แล้วก็มาอีกแล้ว 55
|
 |
 |
 |
 |
Date :
2013-03-05 04:26:13 |
By :
puldool |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มัน duplicate เพราะเรากำหนดค่าที่ซ้ำกันให้กับฟิลด์ที่เป็น PRIMARY หรือ UNIQUE ครับ
ลองเช็คดูครับ ว่าเราทำอย่างนั้นกับฟิลด์ไหนในตารางใดหรือเปล่า
|
 |
 |
 |
 |
Date :
2013-03-05 04:30:52 |
By :
cookiephp |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เป็น ฟิลด์ primary ครับ แต่ต้องการให้มันแก้ไๆขได้ครับ ซึ่งตอนแรกก็แก้ไขได้แล้ว แต่ลองไปลองมามันเป็นอีก แล้วอยู่ดีดีก็ได้อีก -*-
|
ประวัติการแก้ไข 2013-03-05 04:37:58 2013-03-05 04:40:54 2013-03-05 04:44:55
 |
 |
 |
 |
Date :
2013-03-05 04:37:10 |
By :
puldool |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตาราง ไม่ซับซ้อนอะไรนะครับ ตามโพสที่ 1 เลยอะครับ
|
 |
 |
 |
 |
Date :
2013-03-05 04:54:22 |
By :
puldool |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ครับ กำลังลองแบบใหม่ที่ดีกว่า ยังไงก็ขอขอบคุณมากๆครับ
|
 |
 |
 |
 |
Date :
2013-03-05 05:07:51 |
By :
puldool |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|