สอบถามเรื่องการ Insert กับ Update พร้อมกัน ครับ
รูปที่1คือตาราง Interment ส่วนนี้ผมทำการ insertได้แล้วครับ
แต่ตอน insert ผมต้องการให้ Update เฉพาะชื่อฟิลด์ status ของแต่ละ m_id ที่มีข้อมูลอยู่ในทั้ง 2 ตารางที่ต้องการ Update คือตาราง member กับ deposit
ช่วยแนะนำผมด้วยครับ ต้องเขียน code ยังไง
นั่งเขียนตั้งนานก็ยังไม่ได้
รูปที่2 คือตาราง member
รูปที่3 คือตาราง deposit
Code (PHP)
<?php require_once('Connections/satcha.php'); ?>
<?php
header("Content-type: text/html; charset=utf-8");
date_default_timezone_set('Asia/Bangkok');
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
$now = date('d-m-') . (date('Y')+543);
$time = date('G:i:s');
$new_id = mysql_result(mysql_query("Select Max(substr(im_id,-8))+1 as MaxID from interment"),0,"MaxID");//เลือกเอาค่า id ที่มากที่สุดในฐานข้อมูลและบวก 1 เข้าไปด้วยเลย
if($new_id==''){ // ถ้าได้เป็นค่าว่าง หรือ null ก็แสดงว่ายังไม่มีข้อมูลในฐานข้อมูล
$im_id="IM00000001";
}else{
$im_id="IM".sprintf("%08d",$new_id);//ถ้าไม่ใช่ค่าว่าง
}
if(move_uploaded_file($_FILES["im_pic"]["tmp_name"],"death_certificate/".$_FILES["im_pic"]["name"])) // death_certificate คือ โฟลเดอร์เก็บใบรับรองแพทย์
{
$objConnect = mysql_connect("localhost","root","1234") or die("Error Connect to Database");
$objDB = mysql_select_db("satcha");
$sql = "SELECT * FROM interment where m_id='$m_id'";
$db_query = mysql_query($sql);
$num_rows = mysql_num_rows($db_query);
if($num_rows == 0){
$status = "เสียชีวิต";
$insertSQL = sprintf("INSERT INTO interment (im_id, m_id, im_deaddate, im_money, im_paydate, im_pic, status) VALUES ('$im_id', '$m_id','$im_paydate', '$im_money','$now ,$time', '".$_FILES["im_pic"]["name"]."','$status')");
$objQuery = mysql_query($strSQL);
}else{
echo "<script>alert('ไม่สามารถบันทึกข้อมูลซ้ำได้ รหัสสมาชิกนี้ได้เสียชีวิตไปแล้ว..')</script>";
echo "<script>history.back()</script>";
}
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
mysql_select_db($database_satcha, $satcha);
$Result1 = mysql_query($insertSQL, $satcha) or die(mysql_error());
$insertGoTo = "interment_correct.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
?>
Tag : PHP, HTML/CSS, JavaScript
Date :
2015-07-18 01:11:38
By :
Alzheimertzz
View :
2067
Reply :
9
Quote: $insertSQL = sprintf("INSERT INTO interment (im_id, m_id, im_deaddate, im_money, im_paydate, im_pic, status) VALUES ('$im_id', '$m_id','$im_paydate', '$im_money','$now ,$time', '".$_FILES["im_pic"]["name"]."','$status')");
$objQuery = mysql_query($strSQL );
ลองดูครับ ตัวแปรไม่ตรง ส่วนจะ Update อะไรก็เขียน Query ขึ้นมาอีกชุดครับ
Date :
2015-07-18 11:18:22
By :
mr.win
=> SQL UPDATE
Date :
2015-07-18 11:25:11
By :
mr.win
ตอบความคิดเห็นที่ : 3 เขียนโดย : mr.win เมื่อวันที่ 2015-07-18 11:25:11
รายละเอียดของการตอบ ::
แบบนี้ถูกไหมครับพี่วิน
ลองแล้วนะ แต่มันไม่ได้
Code (PHP)
$status = "เสียชีวิต";
$insertSQL = sprintf("INSERT INTO interment (im_id, m_id, im_deaddate, im_money, im_paydate, im_pic, status) VALUES ('$im_id', '$m_id','$im_paydate', '$im_money','$now ,$time', '".$_FILES["im_pic"]["name"]."','$status')");
$objQuery = mysql_query($strSQL);
$updateSQL1 = sprintf("UPDATE member SET status = $status WHERE m_id = $m_id");
$Result1 = mysql_query($updateSQL1, $satcha) or die(mysql_error());
$updateSQL2 = sprintf("UPDATE deposit SET status = $status WHERE m_id = $m_id");
$Result1 = mysql_query($updateSQL2, $satcha) or die(mysql_error());
Date :
2015-07-18 11:42:21
By :
Alzheimertzz
จะทำทีละตารางก็ได้ครับ แต่ลองแบบคิวรี่ ทีเดียว ทั้งสองตารางดูครับ
Code (SQL)
update member m
inner join deposit d
using(m_id)
set m.status='$status', d.status='$status'
where m.m_id='$m_id'
Date :
2015-07-18 12:08:59
By :
NewbiePHP
inner join deposit[] order_deposit o
บันทัดข้างบน สีแดง ไม่ควรเป็นวรรค ควรเป็น เส้นใต้ หรือ ติดกัน เพื่อบ่งบอกว่าเป็นชื่อเดียวกัน
ถ้าเป็น วรรค มันจะผิด ไวยกรณ์
Date :
2015-07-18 18:09:24
By :
NewbiePHP
Date :
2015-07-20 10:15:10
By :
mr.win
Load balance : Server 01