Postingan lainnya
Query benar, data tidak masuk
gan!, saya var_dump() itu datanya seperti ini,
tapi kok gak masuk database yak? ini kode saya
public function insertAnswer($table, $dataTags = [], $dataSubj = [], $total, $fields = [])
{
$column = implode(', ', array_keys($fields));
$value = implode(', ', array_values($fields));
$value = $this->escape($value);
for ($x = 0; $x < $total; $x++) {
$query = "INSERT INTO $table (answer_tags, answer_subject, $column) VALUES ('$dataTags[$x]','$dataSubj[$x]',$value)";
print_r($query);
$data = $this->mysqli->query($query);
}
if ($data) {
die();
} else {
die('gagal');
}
}
hadeuhh,, pusing gan! gak dikasih tau errornya dimana ama komputer T_T
tolong bantuannya gan.
Tanggapan
Hasil var dump kayaknya seperti ini harusanya:
INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date'), ('Another title', 'Another name', 'Another date'), ('...', '...', '...')
gimana caranya mas ? :D
3 Jawaban:
coba contoh berikut.
mysql
<pre>
CREATE TABLE answer
(
answer_tags
char(1) DEFAULT NULL,
answer_subject
varchar(255) DEFAULT NULL,
quiz_id
int(11) DEFAULT NULL,
activity_id
int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
</pre>
php
<pre> class ABC{ private $mysqli; public function __construct(){ $this->mysqli=mysqli_connect("localhost","XXXXX","XX","XXXXX"); } public function escape($str){ if (get_magic_quotes_gpc()) { return $str; } else { return mysqli_real_escape_string($this->mysqli,$str); } } public function insertAnswer($table, $dataTags = [], $dataSubj = [], $total, $fields = []) { $column = implode(', ', array_keys($fields)); $value = implode(', ', array_values($fields));
$value = $this-&gt;escape($value);
for ($x = 0; $x &lt; $total; $x++) {
$query = "INSERT INTO $table (answer_tags, answer_subject, $column) VALUES ('$dataTags[$x]','$dataSubj[$x]',$value)";
print_r($query);
$data = $this-&gt;mysqli-&gt;query($query);
}
if ($data) {
die();
} else {
die('gagal');
}
}
}
$table="answer"; $dataTags=[ 'A','B','C','D','E' ]; $dataSubj=[ "satu", "dua", "tiga", "empat", "lima" ]; $total=count($dataTags); $fields=[ "quiz_id"=>2, "activity_id"=>1 ];
$abc=new ABC(); $abc->insertAnswer($table,$dataTags,$dataSubj,$total,$fields); </pre>
Tanggapan
terima kasih sebelumnya, tapi itu juga mirip dengan yang saya lakukan. :D
Hmmm... setiap table "answer" dan "quiz" saya reset / truncate. fungsi kembali normal. apa mungkin karena saat saya debug di bagian "answer", ID "Quiz" yang saya dapatkan dengan mengambil nilai hash dari "quiz" pada table "answer" tidak valid ? *hmmmm <pre> require_once "../Core/init.php";
if (!Session::exists('examygoUser')) { Redirect::to('/examygo/user/login.php'); } if (Session::exists('examygoUser') && $user->getUser('username', Session::get('examygoUser'))['role'] <= 1) { Redirect::to('/examygo/courses/'); }
$quiz = new Quiz;
$activities = $course->getActivity('activity_id', $_GET['activity_id']); $course = $course->getCourse('course_id', $_GET['course_id']);
$cid = $_GET['course_id']; $aid = $_GET['activity_id'];
if (Input::get('submit')) {
$_SESSION['addquiz'] = $_POST;
//call validation class
$validasi = new Validation;
//rule validasi
// $validasi = $validasi-&gt;check([
// 'course_full_name' =&gt; [
// 'required' =&gt; true,
// 'min' =&gt; 4,
// 'max' =&gt; 30,
// 'char' =&gt; '/^[a-zA-Z0-9 ]*$/',
// ],
// 'course_short_name' =&gt; [
// 'required' =&gt; true,
// 'min' =&gt; 4,
// 'max' =&gt; 30,
// 'char' =&gt; '/^[a-zA-Z0-9 ]*$/'
// ]
// ]);
if (Helper::checkToken(Input::get('csrf'))) {
if (!isset($_FILES['audio']['name'])) {
//audio
$nama_audio = $_FILES['audio']['name'];
$asal_audio = $_FILES['audio']['tmp_name'];
$format_audio = $_FILES['audio']['type'];
$size_audio = $_FILES['audio']['size'];
$error_audio = $_FILES['audio']['error'];
$nama_audio = time() . addslashes($nama_audio);
//validasi audio input
if ($error_audio == 0) {
if ($format_audio == 'audio/mpeg' || $format_audio == 'audio/x-wav') {
if ($size_audio &lt; 3000000) {
move_uploaded_file($asal, '../Assets/Media/Upload/Audio' . $nama_audio);
} else {
$errors['inputAudio'] = "maximum audio file size is 3mb";
}
} else {
$errors['inputAudio'] = "format that allowed is .mp3 / .wav";
}
} else {
$errors['inputAudio'] = "There is an error!";
}
}
if (!isset($_FILES['image']['name'])) {
//image
$nama_image = $_FILES['image']['name'];
$asal_image = $_FILES['image']['tmp_name'];
$format_image = $_FILES['image']['type'];
$size_image = $_FILES['image']['size'];
$error_image = $_FILES['image']['error'];
$nama_image = time() . addslashes($nama_image);
//validasi image input
if ($error_image == 0) {
if ($format_image == 'image/jpeg' || $format_image == 'image/png') {
if ($size_image &lt; 3000000) {
move_uploaded_file($asal, '../Assets/Media/Upload/Image' . $nama_image);
} else {
$errors['inputimage'] = "maximum image file size is 3mb";
}
} else {
$errors['inputimage'] = "format that allowed is .jpg / .png";
}
} else {
$errors['inputimage'] = "There is an error!";
}
}
if (!isset($hash)) {
$hash = time();
} else {
$hash;
}
$quizData = $quiz-&gt;addQuiz([
'activity_id' =&gt; $activities['activity_id'],
'course_id' =&gt; $course['course_id'],
'semester' =&gt; Input::get('semester'),
'audio' =&gt; $nama_audio,
'image' =&gt; $nama_image,
'question' =&gt; Input::get('question'),
'answer_key' =&gt; Input::get('answer_key'),
'hash' =&gt; $hash
]);
if ($quizData == true) {
$quizId = $quiz-&gt;getQuiz('hash', $hash)['quiz_id'];
$answer_tags = Input::get('answer_tags');
$answer_subject = Input::get('answer_subject');
$total_tags = count($answer_tags);
$result = $quiz-&gt;addAnswer($answer_tags, $answer_subject, $total_tags, [
'quiz_id' =&gt; $quizId,
'activity_id' =&gt; $activities['activity_id']
]);
} else {
echo "&lt;script&gt;Swal.fire('Sorry!', 'fail to upload data!', 'error');&lt;/script&gt;";
}
} else {
Redirect::to('/examygo/courses/');
}
} </pre>
Jawaban Terpilih
masalah atau error nya gak akan ke trigger klo sya gak sengaja die() script pada query answer. selamanya script nya jalan terus. mungkin gak akan ada masalah.
dan ini query yang saya betulkan. silahkan buat refrensi klo mau pake multiple insert.
<pre> public function insertAnswer($table, $dataTags = [], $dataSubj = [], $total, $fields = []) { $column = implode(', ', array_keys($fields)); $value = implode(', ', array_values($fields));
$value = $this-&gt;escape($value);
//make a query default template
$query = "INSERT INTO $table (answer_tags, answer_subject, $column) VALUES ";
//concat with value which you want to concat with it.
for ($x = 0; $x &lt; $total; $x++) {
$query .= "('$dataTags[$x]','$dataSubj[$x]',$value)";
if ($x &lt; $total - 1) {
$query .= ", ";
}
}
$query = rtrim($query, ',');
$data = $this-&gt;mysqli-&gt;query($query);
if ($data) {
//echo "&lt;script&gt;Swal.fire('Good Job!', 'success to upload data!', 'success');&lt;/script&gt;";
Redirect::to("/examygo/courses/");
} else {
die('gagal');
}
}
</pre>
terima kasih yang sudah mau diskusi disini