Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > PHP Insert // กด Summit แล้วไม่บันทึก ไม่รู้ว่าผิดตรงส่วนไหน ช่วยดู Code ให้ด้วยนะคะ Please



 

PHP Insert // กด Summit แล้วไม่บันทึก ไม่รู้ว่าผิดตรงส่วนไหน ช่วยดู Code ให้ด้วยนะคะ Please

 



Topic : 096075



โพสกระทู้ ( 53 )
บทความ ( 0 )



สถานะออฟไลน์




PHP Insert // กด Summit แล้วไม่บันทึก ไม่รู้ว่าผิดตรงส่วนไหน ช่วยดู Code ให้ด้วยนะคะ Please

Code (PHP)
<? include ('conn.php');

$std =("SELECT MAX(Std_value)as MAXID FROM standardvalue "); // query อ่านค่า id สูงสุด
      // คืนค่า id ที่ insert สูงสุด

$id1 =  ("SELECT MAX(LotID) as MAXID FROM qc_record "); // query อ่านค่า id สูงสุด
   // คืนค่า id ที่ insert สูงสุด
                




                
$sql = "INSERT INTO inspection_rec";    
$sql .= "(Pressure,Weight,PerA,PerB,PerC,Diff,MoldShape,MoldRing,Condition,Std_value,LotID)";
$sql .= "VALUES";
$sql .= "('".$_POST['txtair']."','".$_POST['txtweight']."','".$_POST['txta']."','".$_POST['txtb']."'";
$sql .= ",'".$_POST['txtc']."','".$_POST['txtdiff']."','".$_POST['Rdomold']."','".$_POST['selectring2']."'";
$sql .= ",'".$_POST['selectcondition2']."','".$std."','".$id1."')";
mysql_query("SET NAMES utf8");
$query = mysql_query($sql);
if ($query){
    echo "success for save";
}
else 
{
echo "not save";
} 






Tag : PHP, MySQL, HTML/CSS, JavaScript, Tablets







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2013-06-04 13:53:22 By : PattiraPikul View : 925 Reply : 15
 

 

No. 1



โพสกระทู้ ( 464 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter Facebook Hi5

เขียนโค๊ดได้น่ากลัวจริงๆ จับใส่เดื้อๆเลย
ลอง

Code (PHP)
<? include ('conn.php');

$std =("SELECT MAX(Std_value)as MAXID FROM standardvalue "); // query อ่านค่า id สูงสุด
      // คืนค่า id ที่ insert สูงสุด  ตรงนี้ดึงมาทำอะไร

$id1 =  ("SELECT MAX(LotID) as MAXID FROM qc_record "); // query อ่านค่า id สูงสุด
   // คืนค่า id ที่ insert สูงสุด   ตรงนี้ด้วย

                
$sql = "INSERT INTO inspection_rec";    
$sql .= "(Pressure,Weight,PerA,PerB,PerC,Diff,MoldShape,MoldRing,Condition,Std_value,LotID)";
$sql .= "VALUES";
$sql .= "('".$_POST['txtair']."','".$_POST['txtweight']."','".$_POST['txta']."','".$_POST['txtb']."'";
$sql .= ",'".$_POST['txtc']."','".$_POST['txtdiff']."','".$_POST['Rdomold']."','".$_POST['selectring2']."'";
$sql .= ",'".$_POST['selectcondition2']."','".$std."','".$id1."')";

echo $sql;//echo ค่า ออกมาก่อนสิ
mysql_query("SET NAMES utf8");
$query = mysql_query($sql);
if ($query){
    echo "success for save";
}
else 
{
echo "not save";
} 










แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-04 14:00:17 By : dekkuza
 


 

No. 2



โพสกระทู้ ( 12 )
บทความ ( 0 )



สถานะออฟไลน์


field อาจจะไม่ตรงกันก็ได้ค่ะ
กันพลาด ลอง insert จาก phpmyadmin ดูนะคะ พอมัน return sql script ก็ก๊อปเอาไปแทนค่าใหม่
หรือจากโค้ด อาจจะตกหล่นบาง syntax ก็ได้ค่ะ เพราะใส่ตรงๆ แบบนี้มันลายตา เวลาจะไล่ดูมันลำบาก
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-04 14:07:49 By : pharkram
 

 

No. 3

Guest


ตอบความคิดเห็นที่ : 1 เขียนโดย : dekkuza เมื่อวันที่ 2013-06-04 14:00:17
รายละเอียดของการตอบ ::

Code (PHP)
$std =("SELECT MAX(Std_value)as MAXID FROM standardvalue "); // query อ่านค่า id สูงสุด
04.
// คืนค่า id ที่ insert สูงสุด  ตรงนี้ดึงมาทำอะไร

ค่ะ ก้คือ จะดึงไอดี ล่าสุด ตากตารางนึงมาบันทึกลงอีกตารางนึงอ่ะค่ะ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-04 14:28:55 By : PattiraPikul
 


 

No. 4



โพสกระทู้ ( 53 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : dekkuza เมื่อวันที่ 2013-06-04 14:00:17
รายละเอียดของการตอบ ::
ลอง echo ดูแล้ว มันเข้าทุกค่า เหลืออยู่สองค่า คือ ค่า ที่จะ select ID ล่าสุดมาจากตารางอื่น เพื่อบันทึกลงในตารางนี้


ตอบความคิดเห็นที่ : 2 เขียนโดย : pharkram เมื่อวันที่ 2013-06-04 14:07:49
รายละเอียดของการตอบ ::
ลอง echo ดูแล้ว มันเข้าทุกค่า เหลืออยู่สองค่า คือ ค่า ที่จะ select ID ล่าสุดมาจากตารางอื่น เพื่อบันทึกลงในตารางนี้

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-04 14:38:29 By : PattiraPikul
 


 

No. 5



โพสกระทู้ ( 1,819 )
บทความ ( 20 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

เพราะ $std และ $id1 เป็น Sub Query ที่จะใช้เป็นค่าใน VALUES
จึงจำเป็นต้องมีวงเล็บครอบ
แต่อย่างที่เห็น จขกท. เอาวงเล็บไว้นอกสตริง จึงไม่มีความหมายใดๆ ในค่าของสตริง
เมื่อเอาไปใช้ใน VALUES มันจะกลายเป็น SQL ที่ผิดไวยากรณ์

$std =("SELECT MAX(Std_value)as MAXID FROM standardvalue "); // query อ่านค่า id สูงสุด
// คืนค่า id ที่ insert สูงสุด

$id1 =  ("SELECT MAX(LotID) as MAXID FROM qc_record "); // query อ่านค่า id สูงสุด
// คืนค่า id ที่ insert สูงสุด


ต้องเอาวงเล็บไว้ในค่าของสตริง
$std ="(SELECT MAX(Std_value)as MAXID FROM standardvalue)"; // query อ่านค่า id สูงสุด
// คืนค่า id ที่ insert สูงสุด

$id1 =  "(SELECT MAX(LotID) as MAXID FROM qc_record)"; // query อ่านค่า id สูงสุด
// คืนค่า id ที่ insert สูงสุด

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-04 14:39:10 By : cookiephp
 


 

No. 6



โพสกระทู้ ( 1,819 )
บทความ ( 20 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

แต่อย่างที่เห็น การเขียน query ของจขกท.ก็เป็นแบบที่อ่านยาก เนื่องจากใช้การเชื่อมต่อสตริง

ลองมาเขียนแบบนี้ดูมั้ยครับ

ใช้ sprintf() กับค่าที่รับมาจากภายนอก
และไม่ต้องใช้ตัวแปร หากเป็นค่าที่ไม่เปลี่ยนแปลง (ในที่นี้คือ sub query)

$sql = sprintf(
	"
	INSERT INTO inspection_rec
	(
		Pressure,
		Weight,
		PerA,
		PerB,
		PerC,
		Diff,
		MoldShape,
		MoldRing,
		Condition,
		Std_value,
		LotID
	)
	VALUES
	(
		'%s',
		'%s',
		'%s',
		'%s',
		'%s',
		'%s',
		'%s',
		'%s',
		'%s',
		(SELECT MAX(Std_value) FROM standardvalue),
		(SELECT MAX(LotID) FROM qc_record)
	)
	",
	mysql_real_escape_string($_POST['txtair']),
	mysql_real_escape_string($_POST['txtweight']),
	mysql_real_escape_string($_POST['txta']),
	mysql_real_escape_string($_POST['txtb']),
	mysql_real_escape_string($_POST['txtc']),
	mysql_real_escape_string($_POST['txtdiff']),
	mysql_real_escape_string($_POST['Rdomold']),
	mysql_real_escape_string($_POST['selectring2']),
	mysql_real_escape_string($_POST['selectcondition2'])
);

mysql_query("SET NAMES utf8");
$query = mysql_query($sql);
if ($query){
	echo "success for save";
}
else
{
	echo "not save";
} 

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-04 14:43:01 By : cookiephp
 


 

No. 7



โพสกระทู้ ( 53 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 6 เขียนโดย : cookiephp เมื่อวันที่ 2013-06-04 14:43:01
รายละเอียดของการตอบ ::
ก็ บันทึกไม่ได้อยู่ดีค่ะ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-05 10:25:16 By : PattiraPikul
 


 

No. 8



โพสกระทู้ ( 1,819 )
บทความ ( 20 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

ตอน query ให้ตรวจ error ด้วยครับ

Code (PHP)
$query = mysql_query($sql) or die (mysql_error() . " SQL = [ $sql ]");


แล้วเอา error message มาดู


ประวัติการแก้ไข
2013-06-05 10:28:13
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-05 10:26:48 By : cookiephp
 


 

No. 9



โพสกระทู้ ( 32 )
บทความ ( 0 )



สถานะออฟไลน์


ผมลองแปลง แบบง่าย ๆ ไม่ได้ test นะ



Code (PHP)
<? include ('conn.php');
                
$s1	="(SELECT MAX(Std_value) as M1 FROM standardvalue)";
$s2 ="(SELECT MAX(LotID) as M2  FROM qc_record)"; 

$q1=mysql_query($s1)or die(mysql_error());
$q2=mysql_query($s2)or die(mysql_error());

$row1 = mysql_fetch_assoc($q1);
$row2 = mysql_fetch_assoc($q2);
$M1=$row1['M1']; 
$M2 =	$row2['M2'];

$air	=	$_POST['txtair'];
$weight	=	$_POST['txtweight'];
$a		=	$_POST['txta'];
$b		=	$_POST['txtb'];
$c		=	$_POST['txtc'];
$diff	=	$_POST['txtdiff'];
$rd		=	$_POST['Rdomold'];
$s1		=	$_POST['selectring2'];
$s2		=	$_POST['selectcondition2'];

$strSQL = "INSERT INTO inspection_rec";    
$strSQL .= "(Pressure,
Weight,
PerA,
PerB,
PerC,
Diff,
MoldShape,
MoldRing,
Condition,
Std_value,
LotID)

VALUES('$air',
'$weight',
'$a',
'$b',
'$c',
'$diff',
'$rd',
'$s1',
'$s2',
'$M1',
'$M2')";

$query = mysql_query($strSQL)or die(mysql_error());




ผมแนะนำ
ยังไงเวลาเขียน ควรเขียน โชว์ error ด้วยเพราะสะดวกต่อการแก้ไขนะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-05 10:41:07 By : miccoli
 


 

No. 10



โพสกระทู้ ( 1,819 )
บทความ ( 20 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 9 เขียนโดย : miccoli เมื่อวันที่ 2013-06-05 10:41:07
รายละเอียดของการตอบ ::
ไม่ควรเขียนแบบนั้นนะครับ
การเพิ่มตัวแปรที่ไม่ได้ใช้งานอย่างอื่นเพื่อเอาไปแทนในสตริง (ไม่แม้แต่ใช้เพื่อ escape) นั้นถือว่าไม่ดีครับ
ทำให้โค้ดเยิ่นเย้อเกินความจำเป็น ทำให้ผิดง่ายขึ้นอีก เพราะมีตัวแปรมากขึ้น ชื่อเยอะขึ้น
ลองดูแบบที่ผมเขียนนะครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-05 10:44:31 By : cookiephp
 


 

No. 11



โพสกระทู้ ( 32 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 10 เขียนโดย : cookiephp เมื่อวันที่ 2013-06-05 10:44:31
รายละเอียดของการตอบ ::
ขอบคุณครับ
สาเหตุที่ผมเขียนแบบนี้เพราะคิดว่ามันไล่ดู error ง่าย
แต่ก็รู้นะว่ามันกินทรัพยากรคอมมาก ยิ่งพวก loop ยิ่งวนยิ่งช้า

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-05 10:48:23 By : miccoli
 


 

No. 12



โพสกระทู้ ( 53 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 10 เขียนโดย : cookiephp เมื่อวันที่ 2013-06-05 10:44:31
รายละเอียดของการตอบ ::
Code (PHP)
INSERT INTO inspection_rec(Pressure,Weight,PerA,PerB,PerC,Diff,MoldShape,MoldRing,
Condition,Std_value,LotID)VALUES('','','','','','','','','','S57','L17')You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version for the right syntax to use near 'Condition,Std_value,LotID)VALUES('','','','','','','','','','S57','L17')' at line 1 SQL = [INSERT INTO inspection_rec(Pressure,Weight,PerA,PerB,PerC,Diff,MoldShape,MoldRing,Condition,Std_value,LotID)
VALUES('','','','','','','','','','S57','L17')]


มันแจ้ง error ว่าผิดหลักไวยากรณ์ แต่ก็ดูแล้วนะคะ ก็ตรวจทานดูแล้วก็ไม่เหนมี



ประวัติการแก้ไข
2013-06-05 11:29:01
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-05 11:28:14 By : PattiraPikul
 


 

No. 13



โพสกระทู้ ( 53 )
บทความ ( 0 )



สถานะออฟไลน์


Code (SQL)
INSERT INTO inspection_rec(Pressure,Weight,PerA,PerB,PerC,Diff,MoldShape,MoldRing,
Condition,Std_value,LotID)VALUES('','','','','','','','','','S57','L17')You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version for the right syntax to use near 'Condition,Std_value,LotID)VALUES('','','','','','','','','','S57','L17')' at line 1 SQL = [INSERT INTO inspection_rec(Pressure,Weight,PerA,PerB,PerC,Diff,MoldShape,MoldRing,Condition,Std_value,LotID)
VALUES('','','','','','','','','','S57','L17')]


มันแจ้ง error ว่าผิดหลักไวยากรณ์ แต่ก็ดูแล้วนะคะ ก็ตรวจทานดูแล้วก็ไม่เหนมี
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-05 11:56:16 By : PattiraPikul
 


 

No. 14



โพสกระทู้ ( 1,819 )
บทความ ( 20 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

ทราบสาเหตุแล้วครับ Condition เป็น reserved word ครับ

เอาใหม่ ต่อไปนี้ อะไรที่เป็นชื่อตาราง หรือชื่อคอลัมน์ ให้ครอบมันด้วย ` นะครับ
แม้มันจะเป็นหรือไม่เป็น reserved word ก็ตามแต่ แต่มั่นใจได้ว่าจะไม่ชนกับ reserved word แน่นอน


$sql = sprintf(
	"
	INSERT INTO `inspection_rec`
	(
		`Pressure`,
		`Weight`,
		`PerA`,
		`PerB`,
		`PerC`,
		`Diff`,
		`MoldShape`,
		`MoldRing`,
		`Condition`,
		`Std_value`,
		`LotID`
	)
	VALUES
	(
		'%s',
		'%s',
		'%s',
		'%s',
		'%s',
		'%s',
		'%s',
		'%s',
		'%s',
		(SELECT MAX(`Std_value`) FROM `standardvalue`),
		(SELECT MAX(`LotID`) FROM `qc_record`)
	)
	",
	mysql_real_escape_string($_POST['txtair']),
	mysql_real_escape_string($_POST['txtweight']),
	mysql_real_escape_string($_POST['txta']),
	mysql_real_escape_string($_POST['txtb']),
	mysql_real_escape_string($_POST['txtc']),
	mysql_real_escape_string($_POST['txtdiff']),
	mysql_real_escape_string($_POST['Rdomold']),
	mysql_real_escape_string($_POST['selectring2']),
	mysql_real_escape_string($_POST['selectcondition2'])
);

mysql_query("SET NAMES utf8");
$query = mysql_query($sql);
if ($query){
	echo "success for save";
}
else
{
	echo "not save";
} 



ประวัติการแก้ไข
2013-06-05 12:10:17
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-05 12:09:48 By : cookiephp
 


 

No. 15



โพสกระทู้ ( 53 )
บทความ ( 0 )



สถานะออฟไลน์


ทำได้แล้วนะคะ ได้คำตอบแล้ว ขอบคุณทุกคน ทุกคำตอบมากๆๆนะคะ พอดีติดงานอยู่ เลยไม่ค่อยว่าง ต้องขอโทษด้วยจริงๆค่ะ ขอบคุณค่ะ ตอบความคิดเห็นที่ : 14 เขียนโดย : cookiephp เมื่อวันที่ 2013-06-05 12:09:48
รายละเอียดของการตอบ ::
ขอบคุณค่ะ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-06-05 14:22:46 By : PattiraPikul
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : PHP Insert // กด Summit แล้วไม่บันทึก ไม่รู้ว่าผิดตรงส่วนไหน ช่วยดู Code ให้ด้วยนะคะ Please
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่