รบกวนท่านผู้รู้ดู CODE นี้ให้ด้วยครับ เรื่องการค้นหาข้อมูล โดยใช้ความสัมพันธ์กันสี่ตารางครับ ติดบรรทัดสุดท้ายจริงๆครับ
Code (PHP)
$sql = 'SELECT register.StuID, register.SubjectID, register.Semester, register.date_register, register.reg_time, student.Stu_ID, student.Stu_Name, student.Stu_LName, student.Stu_Clase, student.Stu_Room, student.Stu_User, student.Stu_Password, subject.SubjectID, subject.SubjectName, subject.TeacherID, subject.SubjectUnit, subject.Semester, teacher.TeacherID, teacher.TeacherName, teacher.TeacherLName'
. ' FROM student INNER JOIN ((register INNER JOIN subject ON register.SubjectID = subject.SubjectID) INNER JOIN teacher ON subject.TeacherID = teacher.TeacherID) ON student.Stu_ID = register.StuID'
. ' WHERE (((register.SubjectID) = "ง11111"));';
เนื่องจากผมต้องการดึงข้อมูลจาก สี่ ตารางออกมา โดยให้หาจาก WHERE (((register.SubjectID) = "ง11111"));';ได้ แต่ ให้หา WHERE (((register.SubjectID) = '$TextSubjectID'));'; กลับ error ครับ ผมติดตรงบรรทัดสุดท้ายครับ รบกวนด้วนนะครับ (ทุกตารางมีข้อมูลที่มีความสัมพันธ์กันหมดครับ)Tag : PHP, MySQL
ประวัติการแก้ไข 2014-07-21 00:24:29
Date :
2014-07-21 00:22:46
By :
wittayakorn1
View :
910
Reply :
9
Code (PHP)
(((register.SubjectID) = ' "+ $TextSubjectID +" '));';
Date :
2014-07-21 00:44:00
By :
Zakariya
จะอธิบายยังไงดี???
การหลักการใช้งานซิงเกิลโค้ด(') กับดับเบิลโค้ด(") มันมีหลักแตกต่างกันนิดหน่อย คือ
ซิงเกิลโค้ด(') คือ ทุกอย่างที่อยู่ในเครื่องหมายซิงเกิลโค้ด จะไม่มีการประมวลผลใดๆอีก จะเป็นสตริงเท่านั้น
ดับเบิลโค้ด(") คือ ทุกอย่างที่อยู่ในเครื่องหมายดับเบิลโค้ด จะมีการเช็คว่ามีตัวแปรหรือไม่ และจะประมวลผลหาค่าตัวแปรเพื่อใช้งานต่อ หรือหากไม่มีตัวแปรก็เป็นสตริงธรรมดา
มาดูตัวอย่าง
Code (PHP)
$test = 'Hello!';
echo 'Values = $test';
echo '<br>';
echo "Values = $test";
จากตัวอย่างจะได้ผลลัพธ์ดังนี้
ดังนั้นปกติแล้วในคำสั่ง SQL ส่วนใหญ่จะไม่มีค่าตายตัว ควรจะใช้ดับเบิลโค้ด(") ดีกว่าครับ
Code (PHP)
$sql = " SELECT
register.StuID
, register.SubjectID
, register.Semester
, register.date_register
, register.reg_time
, student.Stu_ID
, student.Stu_Name
, student.Stu_LName
, student.Stu_Clase
, student.Stu_Room
, student.Stu_User
, student.Stu_Password
, subject.SubjectID
, subject.SubjectName
, subject.TeacherID
, subject.SubjectUnit
, subject.Semester
, teacher.TeacherID
, teacher.TeacherName
, teacher.TeacherLName
FROM
student
INNER JOIN
((register INNER JOIN subject ON register.SubjectID = subject.SubjectID) INNER JOIN teacher ON subject.TeacherID = teacher.TeacherID)
ON
student.Stu_ID = register.StuID'
WHERE
((register.SubjectID) ='$TextSubjectID')";
Date :
2014-07-21 09:22:33
By :
arm8957
ตอบความคิดเห็นที่ : 2 เขียนโดย : arm8957 เมื่อวันที่ 2014-07-21 09:22:33
รายละเอียดของการตอบ ::
ยังไม่ได้ครับรบกวนดูให้หมดได้ไหมครับ error ที่บรรทัด 108 ครับ
Code (PHP)
<?php
session_start();
$ses_userid =$_SESSION[ses_userid];
$ses_username = $_SESSION[ses_username];
if($ses_userid <> session_id() or $ses_username ==""){
echo " No Login";
echo "<meta http-equiv='refresh' content='2;URL=index.php' />";
} else {
?>
<script>
function conf_del()
{
if(confirm("จะลบจริง ๆ เหรอจ๊ะ?"))
{
alert("ลบแล้วเด้อ");
return;
}
alert("ยังไม่ได้ลบ");
return;
}
</script>
<?
include("include/class.mysqldb.php");
include "include/dbconfig.php";
?>
<html>
<head>
<meta charset="windows-874">
<title>รายงานการลงทะเบียน</title>
<style type="text/css">
a:hover {
color: #F9060A;
}
</style>
</head>
<body>
<table width="616" border="0">
<tr>
<th bgcolor="#868181" style="text-align: left; color: #F8F2F2;" scope="col">ตารางข้อมูลวิชา (รายงานการลงทะเบียนของนักเรียนตามรายวิชา)</th>
</tr>
</table>
<a href="Register_AdminReport.php">หน้าหลัก</a><br>
<hr align="left" width="100%">
<form name="form2"action="Register_AdminReport.php" method="post">
<label for="SubjectID">Text Field:</label>
<input name="SubjectID" type="text" id="SubjectID" value="<?echo"$SubjectID";?>">
<input name="submit" type="submit" id="submit" formaction="Register_AdminReport2.php" value="Submit">
</form>
<span style="text-align: right"></span>
<table width="100%" border="0" align="center" cellspacing="0">
<tr>
<td width="8%" bgcolor="#C3BCBC">รหัสวิชา</td>
<td width="16%" bgcolor="#C3BCBC">ชื่อวิชา</td>
<td width="22%" bgcolor="#C3BCBC">ครูที่ปรึกษาคนที่1</td>
<td width="24%" align="left" bgcolor="#C3BCBC">นักเรียนที่สมัคร</td>
<td width="7%" align="center" bgcolor="#C3BCBC">ระดับชั้น</td>
<td width="10%" align="center" bgcolor="#C3BCBC">วัน - เวลา</td>
<td width="13%" align="center" bgcolor="#C3BCBC">ภาคเรียน</td>
</tr>
<?
//include("config.inc.php");
//$sql="select * from subject";
//$sql="select*from subject where Semester like '%$SubjectID%'";
//$sql="SELECT DISTINCT subject.num, subject.SubjectID, subject.SubjectName, subject.SubjectUnit, subject.Semester, subject.Teacher1, subject.Teacher2, subject.Teacher3, subject.TeacherID, teacher.TeacherName, teacher.TeacherLName FROM teacher INNER JOIN subject ON teacher.TeacherID = subject.TeacherID where Semester like '%$Semester2%' AND SubjectID like '%$SubjectID%' AND SubjectName like '%$SubjectName%' AND subject.TeacherID like '%$TeacherID%' ";
//$sql = 'SELECT register.StuID, register.SubjectID, register.Semester, register.date_register, register.reg_time, student.Stu_ID, student.Stu_Name, student.Stu_LName, student.Stu_Clase, student.Stu_Room, student.Stu_User, student.Stu_Password, subject.SubjectID, subject.SubjectName, subject.TeacherID, subject.SubjectUnit, subject.Semester, teacher.TeacherID, teacher.TeacherName, teacher.TeacherLName'
// . ' FROM student INNER JOIN ((register INNER JOIN subject ON register.SubjectID = subject.SubjectID) INNER JOIN teacher ON subject.TeacherID = teacher.TeacherID) ON student.Stu_ID = register.StuID'
// . ' WHERE (((register.SubjectID) = "ง11111"));';
// WHERE (((register.SubjectID)=\'ง11111\'))'; (((register.SubjectID) like \'%$SubjectID%'))'; (((register.SubjectID)="$SubjectID"));';
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$sql = "SELECT
register.StuID
, register.SubjectID
, register.Semester
, register.date_register
, register.reg_time
, student.Stu_ID
, student.Stu_Name
, student.Stu_LName
, student.Stu_Clase
, student.Stu_Room
, student.Stu_User
, student.Stu_Password
, subject.SubjectID
, subject.SubjectName
, subject.TeacherID
, subject.SubjectUnit
, subject.Semester
, teacher.TeacherID
, teacher.TeacherName
, teacher.TeacherLName
FROM
student
INNER JOIN
((register INNER JOIN subject ON register.SubjectID = subject.SubjectID) INNER JOIN teacher ON subject.TeacherID = teacher.TeacherID)
ON
student.Stu_ID = register.StuID'
WHERE
((register.SubjectID) ='$SubjectID')";
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$result=mysql_query($sql);
$i = 0;
while($rs=mysql_fetch_array($result))
{
$i++;
if($i%2==0)
{
$bg = "#CCCCCC";
}
else
{
$bg = "#FFFFFF";
}
//นับจำนวนตารางลงทะเบียน=============================
//$strsql="select * from register where SubjectID ='$rs[SubjectID]'";
//$result2=mysql_query($strsql);
//$num_reg=mysql_num_rows($result2); //นับ
//===============================================
echo"<tr bgcolor=$bg>";
echo"<td>$rs[SubjectID]</td>";
echo"<td>$rs[SubjectName]</td>";
echo"<td>$rs[TeacherID]- $rs[TeacherName] $rs[TeacherLName]</td>";
echo"<td>$rs[Stu_ID]- $rs[Stu_Name] $rs[Stu_LName] </td>";
echo"<td align=center>$rs[Stu_Clase]/$rs[Stu_Room]</td>";
echo"<td align=center>$rs[date_register] - $rs[reg_time]</td>";
//echo"<td>TEST</td>"; //นับจำนวนที่สมัคร
// echo"<td align=center>$num_reg</td>"; //นับจำนวนที่สมัคร
echo"<td align=center>$rs[Semester]</td>";
echo"</tr>";
}
echo"</tr>";
?>
</table>
<br>
</body>
</html>
<?php
}
?>
ประวัติการแก้ไข 2014-07-21 10:17:11 2014-07-21 10:20:06
Date :
2014-07-21 10:14:32
By :
wittayakorn1
เสริมนิดนึง ครับ
Statement ของทุก Database Server ใช้ single quote ครอบ string ครับ ไม่ใช้ double quote
สำหรับ php ใช้ single quote ครอบ string ที่เป็น constant คือเจาะจงตามที่เห็น
แต่ถ้าถ้า double quote ครอบ นั้น อักษรพิเศษ ตัวแปรสามารถ แสดงค่าได้ครับ
แต่สำหรับ single quote ยกเว้น \' และ \" ไว้ในกรณีพิเศษ เป็นการให้แสดง ทัี้ง สอง quote ใน string ได้
Code (PHP)
$string ='TEST';
echo '<pre>$string='.$string.'<br />\n'."$string=".$string."\n".'DATATEST</pre>';
Code (PHP)
. ' WHERE (((register.SubjectID) = "ง11111"));';
//แก้เป็น
. ' WHERE ((register.SubjectID = \'ง11111\'));';
Date :
2014-07-21 10:19:53
By :
Chaidhanan
105 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
106.$result=mysql_query($sql);
มีเออเร่อร์อะไรไหมครับ ที่บันทัด 106
ถ้ามีเออเรอร์ แก้ตามนี้ครับ แล้วเอาเออเร่อร์มาดูครับ
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
106. $result=mysql_query($sql) or die($sql."<br/>\n".mysql_error());
Date :
2014-07-21 10:24:39
By :
Chaidhanan
ตอบความคิดเห็นที่ : 5 เขียนโดย : Chaidhanan เมื่อวันที่ 2014-07-21 10:24:39
รายละเอียดของการตอบ ::
Error ตามนี้ครับ ท่าน
SELECT register.StuID , register.SubjectID , register.Semester , register.date_register , register.reg_time , student.Stu_ID , student.Stu_Name , student.Stu_LName , student.Stu_Clase , student.Stu_Room , student.Stu_User , student.Stu_Password , subject.SubjectID , subject.SubjectName , subject.TeacherID , subject.SubjectUnit , subject.Semester , teacher.TeacherID , teacher.TeacherName , teacher.TeacherLName FROM student INNER JOIN ((register INNER JOIN subject ON register.SubjectID = subject.SubjectID) INNER JOIN teacher ON subject.TeacherID = teacher.TeacherID) ON student.Stu_ID = register.StuID' WHERE ((register.SubjectID) ='ช33333')
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 '' WHERE ((register.SubjectID) ='ช33333')' at line 27
Date :
2014-07-21 10:30:56
By :
wittayakorn1
เห็นละ ซิงเกิลโค้ดเกินมาตัวนึง ขออภัย
Code (PHP)
$sql = " SELECT
register.StuID
, register.SubjectID
, register.Semester
, register.date_register
, register.reg_time
, student.Stu_ID
, student.Stu_Name
, student.Stu_LName
, student.Stu_Clase
, student.Stu_Room
, student.Stu_User
, student.Stu_Password
, subject.SubjectID
, subject.SubjectName
, subject.TeacherID
, subject.SubjectUnit
, subject.Semester
, teacher.TeacherID
, teacher.TeacherName
, teacher.TeacherLName
FROM
student
INNER JOIN
((register INNER JOIN subject ON register.SubjectID = subject.SubjectID) INNER JOIN teacher ON subject.TeacherID = teacher.TeacherID)
ON
student.Stu_ID = register.StuID
WHERE
((register.SubjectID) ='$TextSubjectID')";
Date :
2014-07-21 10:49:52
By :
arm8957
Load balance : Server 00