Как отправить связанные переменные на другую страницу, чтобы затем обновить базу данных? - PullRequest
1 голос
/ 03 мая 2020

Я пытаюсь обновить базу данных в зависимости от того, нажата ли кнопка-переключатель или нет для ряда различных строк, которые все были сгенерированы из базы данных. Мне удалось выделить все данные и сохранить их в переключатели нормально. Однако у меня возникают проблемы при передаче переменных на следующую страницу для запуска функции обновления. Я не использовал функцию обновления раньше, и я изо всех сил пытаюсь найти других, у которых была такая же проблема.

Ниже приведен код для переключателей и каждого значения переменной:

$name1 = "week1" . $ind;
            $name2 = "week2" . $ind;
            $name3 = "week3" . $ind;
            $name4 = "week4" . $ind;
            $name5 = "week5" . $ind;
            $name6 = "week6" . $ind;
            $name7 = "week7" . $ind;
            $name8 = "week8" . $ind;
            $name9 = "week9" . $ind;
            $name10 = "week10" . $ind;
            $SID2="SID" . $ind;
            $ClassID2 = "ClassID" . $ind;
            $StudentName2 = "StudentName" . $ind;

            print ("<form action='Table/Update2.php' method='post'><tr>");

            //print a cell
            print ("<td> <input type ='hidden' name ='". $SID2."' value ='".$SID."'> $SID </td>");
            print ("<td> <input type ='hidden' name ='" . $ClassID2 . "' value ='" . $ClassID . "'> $ClassID </td>");
            print ("<td> <input type ='hidden' name ='" . $StudentName2 . "'value='".$StudentName."'> $StudentName </td>");
    // print the radio buttons
            print ("<td> $week_1 <input type='radio' value='1' name=" . $name1 ." " . (($week_1 == '1')? 'checked=\"checked\"' :"") .  "><input type='radio' value='0' name=" . $name1 ." " . (($week_1 == '0')? 'checked=\"checked\"' :"") .  "></td> ");
            print ("<td> $week_2 <input type='radio' name=" . $name2 ." " . (($week_2 == '1')? 'checked=\"checked\"' :"") .  "><input type='radio' name=" . $name2 ." " . (($week_2 == '0')? 'checked=\"checked\"' :"") .  "></td> ");
            print ("<td> $week_3 <input type='radio' name=" . $name3 ." " . (($week_3 == '1')? 'checked=\"checked\"' :"") .  "><input type='radio' name=" . $name3 ." " . (($week_3 == '0')? 'checked=\"checked\"' :"") .  "></td> ");
            print ("<td> $week_4 <input type='radio' name=" . $name4 ." " . (($week_4 == '1')? 'checked=\"checked\"' :"") .  "><input type='radio' name=" . $name4 ." " . (($week_4 == '0')? 'checked=\"checked\"' :"") .  "></td> ");
            print ("<td> $week_5 <input type='radio' name=" . $name5 ." " . (($week_5 == '1')? 'checked=\"checked\"' :"") .  "><input type='radio' name=" . $name5 ." " . (($week_5 == '0')? 'checked=\"checked\"' :"") .  "></td> ");
            print ("<td> $week_6 <input type='radio' name=" . $name6 ." " . (($week_6 == '1')? 'checked=\"checked\"' :"") .  "><input type='radio' name=" . $name6 ." " . (($week_6 == '0')? 'checked=\"checked\"' :"") .  "></td> ");
            print ("<td> $week_7 <input type='radio' name=" . $name7 ." " . (($week_7 == '1')? 'checked=\"checked\"' :"") .  "><input type='radio' name=" . $name7 ." " . (($week_7 == '0')? 'checked=\"checked\"' :"") .  "></td> ");
            print ("<td> $week_8 <input type='radio' name=" . $name8 ." " . (($week_8 == '1')? 'checked=\"checked\"' :"") .  "><input type='radio' name=" . $name8 ." " . (($week_8 == '0')? 'checked=\"checked\"' :"") .  "></td> ");
            print ("<td> $week_9 <input type='radio' name=" . $name9 ." " . (($week_9 == '1')? 'checked=\"checked\"' :"") .  "><input type='radio' name=" . $name9 ." " . (($week_9 == '0')? 'checked=\"checked\"' :"") .  "></td> ");
            print ("<td> $week_10 <input type='radio' name=" . $name10 ." " . (($week_10 == '1')? 'checked=\"checked\"' :"") .  "><input type='radio' name=" . $name10 ." " . (($week_10 == '0')? 'checked=\"checked\"' :"") .  "></td> ");

            //close row
            print ("</tr>");
            $ind++;

А ниже находится следующая страница, на которой поступают данные, и я считаю, что это основная проблема:



$SID =( isset ($_POST['".SID2 ."']));
$ClassID = (isset ($_POST['" . $ClassID2 . "']));
$StudentName = (isset ($_POST[ '" . $StudentName2 . "']));

$week1 = ( isset ($_POST ['". $name1 . "']) ? '1':'0' );
$week2 = ( isset ($_POST [ '". $name2 . "']) ? '1' : '0');
$week3 = ( isset ($_POST [ '". $name3 . "']) ? '1' : '0');
$week4 = ( isset ($_POST [ '". $name4 . "']) ? '1' : '0');
$week5 = ( isset ($_POST [ '". $name5 . "']) ? '1' : '0');
$week6 = ( isset ($_POST [ '". $name6 . "']) ? '1' : '0');
$week7 = ( isset ($_POST [ '". $name7 . "']) ? '1' : '0');
$week8 = ( isset ($_POST [ '". $name8 . "']) ? '1' : '0');
$week9 = ( isset ($_POST [ '". $name9 . "']) ? '1' : '0');
$week10 = ( isset ($_POST [ '". $name10 . "']) ? '1' : '0');

Ниже приведен оператор SQL, который продолжает появляться с ошибкой HY093:

$sqlQuery = "Update weekbyweek SET (:SID =?, :ClassID=?, :StudentName=?, :Week_1=?, :Week_2=?, :Week_3=?, :Week_4=?, :Week_5=?, :Week_6=?, :Week_7=?, :Week_8=?, :Week_9=?, :Week_10=?)";
$statement = $db->prepare($sqlQuery);
$statement->execute([':SID'=> $SID, ':ClassID'=> $ClassID, ':StudentName' => $StudentName, ':Week_1' => $week1, ':Week_2' => $week2, ':Week_3' => $week3, ':Week_4' => $week4,':Week_5' => $week5, ':Week_6' => $week6,':Week_7' => $week7, ':Week_8' => $week8,':Week_9' => $week9, ':Week_10' => $week10]);

Я предполагаю, что не правильно связал значения на следующей странице.

Любая помощь или совет будет принята с благодарностью.

1 Ответ

0 голосов
/ 03 мая 2020

У вас в основном 2 проблемы. Fist

SET (: SID =?

обе стороны: SID и? Являются заполнителями, и когда вы решили использовать именованные переменные ( : SID) вы можете использовать только: SID, но это только валиф с правой стороны

Как

SID =: SID

С левой стороны это имя столбца, а правая часть является заполнителем ´, к которому вы привязываете $ SID

Вторая проблема - это круглые скобки, mysql они вам не нравятся, как вы их используете, в вашем случае избавиться от них

Итак, вы получите следующий код, конечно, я не знаю вашу базу данных, поэтому я не могу гарантировать, что это сработает.

$sqlQuery = "Update weekbyweek SET SID = :SID, ClassID = :ClassID, StudentName=:StudentName, Week_1= :Week_1, Week_2=:Week_2, Week_3=:Week_3, Week_4=:Week_4, Week_5= :Week_5, Week_6= :Week_6, Week_7= :Week_7, Week_8= :Week_8, Week_9= :Week_0, Week_10=:Week_10";
$statement = $db->prepare($sqlQuery);
$statement->execute([':SID'=> $SID, ':ClassID'=> $ClassID, ':StudentName' => $StudentName, ':Week_1' => $week1, ':Week_2' => $week2, ':Week_3' => $week3, ':Week_4' => $week4,':Week_5' => $week5, ':Week_6' => $week6,':Week_7' => $week7, ':Week_8' => $week8,':Week_9' => $week9, ':Week_10' => $week10]);

Но когда вы есть ошибка Hhnnling проблема должна быть легко решена,

Когда я увидел ваш код, я подумал, почему он не использует массивы, см. Множественный массив переключателей для php форма

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...