1
一時的なテーブルにデータを追加するSQLクエリを送信しようとしています。テーブルに基づいて、私はテーブルから異なる値を格納する配列を作成しています。MySQL:マルチクエリで2番目と3番目の追加クエリが実行されない
最初の挿入ステートメントは完全に正常に実行され、正しく配列に挿入されます。次の2つの追加されたクエリは、配列にデータを挿入していないようです。
私はいくつかのエラーチェックを行った後、ステートメントがクエリの最後に正しい値を持つことを確認しました。
注:ユーザ名、パスワード、およびデータベースは、任意およびすべてのヘルプははるかに高く評価されているコード
から削除されました。
<?php
session_start();
$servername = "localhost";
$username = "";
$password = "";
$db = "";
$conn = new mysqli($servername, $username, $password, $db);
if ($conn->connect_error) {
die("Connection failed:" . $conn->connect_error);
}
$courseID = $_GET['id'];
echo $courseID;
$studentID = $_SESSION['memberID'];
echo $studentID;
$maketemp = "CREATE TEMPORARY TABLE IF NOT EXISTS TempCourseProfile (
CourseID int not null,
CourseName varchar(100),
CourseDescription varchar(200),
CourseObjectives varchar(200),
CourseStartDate date,
CourseEndDate date,
InstructorFirstName varchar(50),
InstructorLastName varchar(50),
PRIMARY KEY(CourseID))";
if($conn->query($maketemp) === TRUE){
echo "you win";
}
else {
echo "you lose";
}
$query = "INSERT INTO TempCourseProfile(CourseID, CourseName, CourseDescription, CourseObjectives)
SELECT CourseID, CourseName, CourseDescription, CourseObjectives FROM Course WHERE CourseID = $courseID;";
$query .= "INSERT INTO TempCourseProfile(CourseStartDate, CourseEndDate)
Select CI.ClassStartDate, CI.ClassEndDate From CourseInSemester CI JOIN ClassSchedule CS on CI.CourseInSemesterID = CS.CourseInSemesterID WHERE CS.StudentID = $studentID AND CI.CourseID = $courseID;";
$query .= "INSERT INTO TempCourseProfile(InstructorFirstName, InstructorLastName)
Select M.FirstName, M.LastName from Member M JOIN CourseInSemester CI ON CI.TeacherID = M.MemberID JOIN ClassSchedule CS ON CS.CourseInSemesterID = CI.CourseInSemesterID WHERE CI.CourseID = $courseID AND CS.StudentID = $studentID;";
echo $query;
if ($conn->multi_query($query)) {
do{
echo "added";
}while($conn->next_result());
} else {
echo "failed to create temp" . $conn->error;
}
$tmparray = array();
$sql = "SELECT * FROM TempCourseProfile where CourseID = $courseID";
//$result = $conn->query($sql);
if($result = $conn->query($sql)){
while ($r = $result->fetch_array()) {
$e = array();
$e['CourseID'] = $r['CourseID'];
$e['CourseName'] = $r['CourseName'];
$e['CourseDescription'] = $r['CourseDescription'];
$e['CourseObjectives'] = $r['CourseObjectives'];
$e['CourseStartDate'] = $r['CourseStartDate'];
$e['CourseEndDate'] = $r['CourseEndDate'];
$e['InstructorFirstName'] = $r['InstructorFirstName'];
$e['InstructorLastName'] = $r['InstructorLastName'];
array_push($tmparray, $e);
}
} else {
echo $conn->error;
}
echo json_encode($tmparray);
?>
問題が$e['CourseStartDate']
、$e['CourseEndDate']
、$e['InstructorFirstName']
、$e['InstructorLastName']
あなたは 'CourseID int not null' /' PRIMARY KEY(CourseID) 'を持っていますが、2番目/ 3番目のクエリは' CourseID'値を持たず、 'auto_increment'ではないので、重複したキーのエラーになります。 – Sean