INSERT ลง mysql ไม่ได้ ขอผู้รู้ช่วยงมหน่อยนะครับ พอดีว่างมจนปวดหัวแล้ว
Code (PHP)
<?php
session_start();
include 'config.php';
$P01=$_SESSION["P01"];
$P02=$_SESSION["P02"];
$P03=$_SESSION["P03"];
$P04=$_SESSION["P04"];
$P05=$_SESSION["P05"];
$P06=$_SESSION["P06"];
$P07=$_SESSION["P07"];
$P08=$_SESSION["P08"];
$P09=$_SESSION["P09"];
$P10=$_SESSION["P10"];
$P11=$_SESSION["P11"];
$P12=$_SESSION["P12"];
$P13=$_SESSION["P13"];
$P14=$_SESSION["P14"];
$P15=$_SESSION["P15"];
$P16=$_SESSION["P16"];
$P17=$_SESSION["P17"];
$P18=$_SESSION["P18"];
$P19=$_SESSION["P19"];
$P20=$_SESSION["P20"];
$P21=$_SESSION["P21"];
$P22=$_SESSION["P22"];
$P23=$_SESSION["P23"];
$P24=$_SESSION["P24"];
$P25=$_SESSION["P25"];
$P26=$_SESSION["P26"];
$P27=$_SESSION["P27"];
$P28=$_SESSION["P28"];
$P29=$_SESSION["P29"];
$P30=$_SESSION["P30"];
$P31=$_SESSION["P31"];
$P32=$_POST["P_person"];
$P33=$_POST["P_Sex"];
$P34=$_POST["P_age"];
$P35=$_POST["P_job"];
session_destroy();
$sum_E = 0;
$sum_I = 0;
$sum_N = 0;
$sum_S = 0;
$sum_T = 0;
$sum_F = 0;
$sum_P = 0;
$sum_J = 0;
if($P01=='E'){
$sum_E++;
} else {
$sum_I++;
}
if($P02=='S'){
$sum_S++;
} else {
$sum_N++;
}
if($P03=='T'){
$sum_T++;
} else {
$sum_F++;
}
if($P04=='J'){
$sum_J++;
} else {
$sum_P++;
}
if($P05=='J'){
$sum_J++;
} else {
$sum_P++;
}
if($P06=='T'){
$sum_T++;
} else {
$sum_F++;
}
if($P07=='S'){
$sum_S++;
} else {
$sum_N++;
}
if($P08=='E'){
$sum_E++;
} else {
$sum_I++;
}
if($P09=='E'){
$sum_E++;
} else {
$sum_I++;
}
if($P10=='S'){
$sum_S++;
} else {
$sum_N++;
}
if($P11=='T'){
$sum_T++;
} else {
$sum_F++;
}
if($P12=='T'){
$sum_T++;
} else {
$sum_F++;
}
if($P13=='S'){
$sum_S++;
} else {
$sum_N++;
}
if($P14=='E'){
$sum_E++;
} else {
$sum_I++;
}
if($P15=='S'){
$sum_S++;
} else {
$sum_N++;
}
if($P16=='T'){
$sum_T++;
} else {
$sum_F++;
}
if($P17=='J'){
$sum_J++;
} else {
$sum_P++;
}
if($P18=='S'){
$sum_S++;
} else {
$sum_N++;
}
if($P19=='J'){
$sum_J++;
} else {
$sum_P++;
}
if($P20=='J'){
$sum_J++;
} else {
$sum_P++;
}
if($P21=='E'){
$sum_E++;
} else {
$sum_I++;
}
if($P22=='S'){
$sum_S++;
} else {
$sum_N++;
}
if($P23=='J'){
$sum_J++;
} else {
$sum_P++;
}
if($P24=='E'){
$sum_E++;
} else {
$sum_I++;
}
if($P25=='S'){
$sum_S++;
} else {
$sum_N++;
}
if($P26=='T'){
$sum_T++;
} else {
$sum_F++;
}
if($P27=='T'){
$sum_T++;
} else {
$sum_F++;
}
if($P28=='J'){
$sum_J++;
} else {
$sum_P++;
}
if($P29=='E'){
$sum_E++;
} else {
$sum_I++;
}
if($P30=='E'){
$sum_E++;
} else {
$sum_I++;
}
if($P31=='T'){
$sum_T++;
} else {
$sum_F++;
}
//////////////////////
$sql = "INSERT INTO MBTI (P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12,P13,P14,P15,P16,P17,P18,P19,P20,P21,P22,P23,P24,P25,P26,P27,P28,P29,P30,P31,P_person,P_Sex,P_age,P_job,sum_E,sum_I,sum_N,sum_S,sum_T,sum_F,sum_P,sum_J )
VALUES($P01,$P02,$P03,$P04,$P05,$P06,$P07,$P08,$P09,$P10,$P11,$P12,$P13,$P14,$P15,$P16,$P17,$P18,$P19,$P20,$P21,$P22,$P23,$P24,$P25,$P26,$P27,$P28,$P29,$P30,$P31,$P32,$P33,$P34,$P35,$sum_E,$sum_I,$sum_N,$sum_S,$sum_T,$sum_F,$sum_P,$sum_J)";
?>
เหมือนว่าจะผิดที่ตัวแปรเนี่ยละแต่ไม่รู้จะแก้ยังไงดีTag : PHP, MySQL
Date :
2016-04-15 20:21:11
By :
lovekint
View :
855
Reply :
11
ลอง echo $sql ดูครับว่าขาดตรงไหน
Date :
2016-04-15 22:21:11
By :
mr.v
การเก็บรายละเอียดข้อมูล มากๆ ไว้ใน record เดียว มันง่ายต่อการดู แต่มันเปลือง ทรัพยากรในการทำงานเพิ่มขึ้น
ยิ่งข้อมูลรายละเอียดเป็นวันๆ ด้วยแล้ว โอกาสที่จะทำงานกับ หลาย field ในเวลาเดียวกัน น้อยมาก
ควร ลดฟีลด์ ลง เพิ่ม index ในการอ้างอิง ดีกว่าครับ
ทั้งนี้ทั้งนั้นก็อยู่ที่ความจำเป็นการใช้โค๊ดนะครับ ไม่ตายตัว
ส่วนโค๊ดที่ทำ น่าจะเขียนเป็น function จะดีกว่า ตัวอย่างโค๊ด
ปล. โค๊ดข้างล่างส่วนที่เป็น ..... ใส่ให้ครบเองนะครับ
Code (PHP)
<?php
session_start();
include 'config.php';
$fld_name = ''; $fld_value = '';
$sum_E = 0; $sum_I = 0;
$sum_S = 0; $sum_N = 0;
$sum_T = 0; $sum_F = 0;
$sum_J = 0; $sum_P = 0;
foreach($_SESSION as $key=>$value){
$is_num = false;
if(preg_match('/[0-9]{2}$/', $key){
$is_num = true; $k=intval(substr($key,-2));
if(in_array($k, array(1,8,9,14,24,29,30)))
if($value=='E') $sum_E++; else $sum_I++;
}else if(in_array($k, array(2,7,.......)))
if($value=='S') $sum_S++; else $sum_N++;
}else if(in_array($k, array(3,6,....)))
if($value=='T') $sum_T++; else $sum_F++;
}else if(in_array($k, array(4,5,......)))
if($value=='J') $sum_E++; else $sum_P++;
}else
switch($value){
case 'E':
}
}
$fld_name .= ($fld_name? ',' : '').$key;
$fld_value .= ($fld_value? ',' : ''). ($is_num? $value : "'$value'");
}
$fld_name .= 'sum_E, sum_I, sum_N, sum_S, sum_T, sum_F, sum_P, sum_J ';
$fld_value .= $sum_E.',',$sum_I,',',$sum_N,',',$sum_S,',',$sum_T,',',$sum_F,',',$sum_P,',',$sum_J ;
//////////////////////
$sql = "INSERT INTO MBTI ( $fld_name ) values ($fld_value)";
session_destroy();
ปล. อีกที session ไม่ควร แยก field ออกเป็น field เดียวๆ ควรทำเป็น array ข้อมูล แล้วใช้ unset ยกเลิก
ตัวอย่าง
Code (PHP)
$_SESSION['myjob']=array( 'P01'=>1, 'P02'=2);
unset($_SESSION['myjob']);
ประวัติการแก้ไข 2016-04-16 05:55:16 2016-04-16 06:04:01
Date :
2016-04-16 05:51:59
By :
Chaidhanan
ขอบคุณมากครับ
Date :
2016-04-16 07:38:30
By :
lovekint
แก้ไข
29.$fld_name .= ', sum_E, sum_I, sum_N, sum_S, sum_T, sum_F, sum_P, sum_J ';
30.$fld_value .= ", ". $sum_E.',',$sum_I,',',$sum_N,',',$sum_S,',',$sum_T,',',$sum_F,',',$sum_P,',',$sum_J ;
เพิ่ม คอมม่า สีแดงทั้งสองบันทัด ไม่ได้เทสต์
ประวัติการแก้ไข 2016-04-16 09:01:59
Date :
2016-04-16 09:01:01
By :
Chaidhanan
ขอบคุณมากครับเดี๋ยวจะลองไปปรับแต่งดู
แล้วจากของผมที่เขียนไว้ มันก็ออกค่ามาครบทำไมมันถึง ไม่เข้า mysql ละเนี่ย
อะไรๆก็ออกมาครบแต่ดันใส่ไม่ได้...งงตรงเนี่ยละ
อันนี้ส่วนconfig
Code (PHP)
<?php
$host="localhost";
$user="dem_dem";
$pass="Dem-271115";
$dbname="dem_survey" ;
$conn = mysqli_connect($host, $user, $pass, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
mysqli_query($conn, "SET NAMES 'utf8'");
?>
Date :
2016-04-16 09:19:43
By :
lovekint
อีกทีก็ ลืมใช้คำสั่ง mysqli_query($conn, $sql) or die('....'); หรือเปล่า
อย่าตกม้าตายตอบจบนะ 555
Date :
2016-04-16 10:28:10
By :
Chaidhanan
ตอนแรกใช้แบบ post ก็ไม่มีปัญหาเลยปรกติแต่พอมาใช้ sessionแล้ว มันไม่เข้าเนี่ยสิ
อยากรู้ว่ามันไปพลาดตรงไหนเนี่ย พอให้echoค่าออกมามันก็ปรกติ
แต่มันดันไม่ query ซะงั้น ขอคำอธิบายแบบละเอียดหน่อยนะครับ
Code (PHP)
include 'config.php';
$sql = "INSERT INTO MBTI (P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12,P13,P14,P15,P16,P17,P18,P19,P20,P21,P22,P23,P24,P25,P26,P27,P28,P29,P30,P31,P_person,P_Sex,P_age,P_job,sum_E,sum_I,sum_N,sum_S,sum_T,sum_F,sum_P,sum_J )
VALUES ('".$_POST["P01"]."','".$_POST["P02"]."','".$_POST["P03"]."','".$_POST["P04"]."', '".$_POST["P05"]."', '".$_POST["P06"]."', '".$_POST["P07"]."', '".$_POST["P08"]."', '".$_POST["P09"]."', '".$_POST["P10"]."', '".$_POST["P11"]."', '".$_POST["P12"]."', '".$_POST["P13"]."', '".$_POST["P14"]."', '".$_POST["P15"]."', '".$_POST["P16"]."', '".$_POST["P17"]."', '".$_POST["P18"]."', '".$_POST["P19"]."', '".$_POST["P20"]."', '".$_POST["P21"]."','".$_POST["P22"]."','".$_POST["P23"]."','".$_POST["P24"]."', '".$_POST["P25"]."','".$_POST["P26"]."','".$_POST["P27"]."','".$_POST["P28"]."', '".$_POST["P29"]."','".$_POST["P30"]."','".$_POST["P31"]."','".$_POST["P_person"]."', '".$_POST["P_Sex"]."','".$_POST["P_age"]."', '".$_POST["P_job"]."',$sum_E, $sum_I,$sum_N,$sum_S,$sum_T,$sum_F,$sum_P,$sum_J)";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
ปล.กำลังแก้ไปใช้แบบเรียกฟังชั่นแบบที่ท่าน Chaidhanan สอนละครับแต่ยังสับสนตรง
Code (PHP)
foreach($_SESSION as $key=>$value){
$is_num = false;
if(preg_match('/[0-9]{2}$/', $key){
$is_num = true; $k=intval(substr($key,-2));
if(in_array($k, array(1,8,9,14,24,29,30)))
if($value=='E') $sum_E++; else $sum_I++;
}else if(in_array($k, array(2,7,.......)))
if($value=='S') $sum_S++; else $sum_N++;
}else if(in_array($k, array(3,6,....)))
if($value=='T') $sum_T++; else $sum_F++;
}else if(in_array($k, array(4,5,......)))
}else
switch($value){
case 'E':
}
}
$fld_name .= ($fld_name? ',' : '').$key;
$fld_value .= ($fld_value? ',' : ''). ($is_num? $value : "'$value'");
}
ประวัติการแก้ไข 2016-04-16 11:57:34
Date :
2016-04-16 11:55:39
By :
lovekint
21.}else
22.switch($value){
23.case 'E':
เอาออกครับ แฮะๆ ลบไม่หมด
และ
if($value=='J') $sum_E++; else $sum_P++;
แก้เป็น
if($value=='J') $sum_J++; else $sum_P++;
ส่วน ที่ จุดจุดจุดจุด คือให้ใส่วันที่ๆเกี่ยวข้องครับ ตัวอย่าง ก็ดูที่อันแรก
ปล.
$conn = mysqli_connect($host, $user, $pass, $dbname);
น่าจะใช้เป็น
$conn = new mysqli($host, $user, $pass, $dbname);
ผมไม่เคยใช้แบบเจ้าของกระทู้ เวลาใช้แบบ oop
อีกที
mysqli_query($conn, "SET NAMES 'utf8'");
แก้เป็น
$conn->set_charset('utf8');
ประวัติการแก้ไข 2016-04-16 13:07:06 2016-04-16 13:09:12
Date :
2016-04-16 13:04:50
By :
Chaidhanan
ขอบคุณมากครับผมจะลองแก้ดูไม่ได้ยังไงมาถามใหม่..
แล้วขอถามส่วนนี้หน่อยครับว่ามันหมายถึงยังไง พอดีว่าพวกpreg_matchเนี่ยไม่ค่อยเคยใช้เลย
('/[0-9]{2}$/', $key) ตรงเนี่ยงงมาก
Code (PHP)
foreach($_SESSION as $key=>$value){
$is_num = false;
if(preg_match('/[0-9]{2}$/', $key){
$is_num = true; $k=intval(substr($key,-2));
ประวัติการแก้ไข 2016-04-16 13:46:53
Date :
2016-04-16 13:42:32
By :
lovekint
แก้ตรงไหนเนี่ย ตาลาย.....
Parse error: syntax error, unexpected '=', expecting ')' in /home/dem/domains/dempowerment.com/public_html/include/mbtiget.php on line 6
Code (PHP)
<?php
session_start();
include './config.php';
$_SESSION['PQ']=array( 'P01'=>$_SESSION["P01"],'P02'=$_SESSION["P02"],'P03'=$_SESSION["P03"],'P04'=$_SESSION["P04"],'P05'=$_SESSION["P05"],'P06'=$_SESSION["P06"],'P07'=$_SESSION["P07"],'P08'=$_SESSION["P08"],'P09'=$_SESSION["P09"],'P10'=$_SESSION["P10"],'P11'=$_SESSION["P11"],'P12'=$_SESSION["P12"],'P13'=$_SESSION["P13"],'P14'=$_SESSION["P14"],'P15'=$_SESSION["P15"],'P16'=$_SESSION["P16"],'P17'=$_SESSION["P17"],'P18'=$_SESSION["P18"],'P19'=$_SESSION["P19"],'P20'=$_SESSION["P20"],'P21'=$_SESSION["P21"],'P22'=$_SESSION["P22"],'P23'=$_SESSION["P23"],'P24'=$_SESSION["P24"],'P25'=$_SESSION["P25"],'P26'=$_SESSION["P26"],'P27'=$_SESSION["P27"],'P28'=$_SESSION["P28"],'P29'=$_SESSION["P29"],'P30'=$_SESSION["P30"],'P31'=$_SESSION["P31"] );
$P32=$_POST["P_person"];
$P33=$_POST["P_Sex"];
$P34=$_POST["P_age"];
$P35=$_POST["P_job"];
$fld_name = ''; $fld_value = '';
$sum_E = 0; $sum_I = 0;
$sum_S = 0; $sum_N = 0;
$sum_T = 0; $sum_F = 0;
$sum_J = 0; $sum_P = 0;
foreach($_SESSION['PQ'] as $key=>$value){
$is_num = false;
if(preg_match('/[0-9]{2}$/', $key){
$is_num = true; $k=intval(substr($key,-2));
if(in_array($k, array(1,8,9,14,21,24,29,30)))
if($value=='E') $sum_E++; else $sum_I++;
}else if(in_array($k, array(2,7,10,13,15,18,22,25)))
if($value=='S') $sum_S++; else $sum_N++;
}else if(in_array($k, array(3,6,11,12,16,26,27,31)))
if($value=='T') $sum_T++; else $sum_F++;
}else if(in_array($k, array(4,5,17,19,20,23,28)))
if($value=='J') $sum_E++; else $sum_P++;
}
}
$fld_name .= ($fld_name? ',' : '').$key;
$fld_value .= ($fld_value? ',' : ''). ($is_num? $value : "'$value'");
}
$fld_name .= ',P_person,P_Sex,P_age,P_job,sum_E, sum_I, sum_N, sum_S, sum_T, sum_F, sum_P, sum_J ';
$fld_value .= ",".$P32.',',$P33,',',$P34,',',$P35,',',$sum_E,',',$sum_I,',',$sum_N,',',$sum_S,',',$sum_T,',',$sum_F,',',$sum_P,',',$sum_J ;
//////////////////////
$sql = "INSERT INTO MBTI ( $fld_name ) values ($fld_value)";
unset($_SESSION['PQ']);
?>
<html>
<head>
<title>dempowerment.com</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
if ($conn->query($sql) === TRUE) {
$_SESSION["sumE"] = $sum_E;
$_SESSION["sumI"] = $sum_I;
$_SESSION["sumS"] = $sum_S;
$_SESSION["sumN"] = $sum_N;
$_SESSION["sumT"] = $sum_T;
$_SESSION["sumF"] = $sum_F;
$_SESSION["sumP"] = $sum_P;
$_SESSION["sumJ"] = $sum_J;
$_SESSION["sex"] = $P33;
?>
<META http-equiv="refresh" content="3;URL=http://dempowerment.com/reportmbti.php">
</head>
<body>
<center>
<H1>New record created successfully...</H1>
</center>
</body>
</html>
<?php
} else {
?>
<META http-equiv="refresh" content="20;URL=http://dempowerment.com/Personalitytest.php">
</head>
<body>
<center>
<H1>Error record Please Try again...</H1>
<? echo $sql;
https://www.thaicreate.com/php/forum/122432.html#top
?>
</center>
</body>
</html>
<?php
}
$conn->close();
?>
Date :
2016-04-17 12:16:29
By :
lovekint
$_SESSION['PQ']=array( 'P01'=> $_SESSION["P01"],
'P02'=$_SESSION["P02"],'P03'=$_SESSION["P03"],'P04'=$_SESSION["P04"],'P05'=$_SESSION["P05"],'P06'=$_SESSION["P06"],'P07'=$_SESSION["P07"],'P08'=$_SESSION["P08"],'P09'=$_SESSION["P09"],'P10'=$_SESSION["P10"],'P11'=$_SESSION["P11"],'P12'=$_SESSION["P12"],'P13'=$_SESSION["P13"],'P14'=$_SESSION["P14"],'P15'=$_SESSION["P15"],'P16'=$_SESSION["P16"],'P17'=$_SESSION["P17"],'P18'=$_SESSION["P18"],'P19'=$_SESSION["P19"],'P20'=$_SESSION["P20"],'P21'=$_SESSION["P21"],'P22'=$_SESSION["P22"],'P23'=$_SESSION["P23"],'P24'=$_SESSION["P24"],'P25'=$_SESSION["P25"],'P26'=$_SESSION["P26"],'P27'=$_SESSION["P27"],'P28'=$_SESSION["P28"],'P29'=$_SESSION["P29"],'P30'=$_SESSION["P30"],'P31'=$_SESSION["P31"] );
เอาสีแดงไปใส่กับทุก = =>
แต่เขียนแบบนี้ มันก็ไม่ได้ประโยชน์
ตัว $_SESSIOIN['P01']=xxxxxx ถูกกำหนดจากที่ไหนมา ไปแก้ตรงนั้นครับ
$_SESSION['PQ]['P01']=ข้อมูลที่จะกำหนดให้กับของเก่า;
คุณมากำหนดตรงนี้ มันก็มีการสร้าง $_SESSION['P01'] อยู่ดีซึ่งเป็นการกำหนดซ้ำซ้อน
ต้องไปรับค่ามาตั้งแต่ต้นครับ
ประวัติการแก้ไข 2016-04-17 13:25:42
Date :
2016-04-17 13:19:27
By :
Chaidhanan
Load balance : Server 04