如何将绑定变量发送到另一个页面,然后更新数据库



我正试图根据是否单击了数据库中生成的多个不同行的单选按钮来更新数据库。我已经成功地选择了所有的数据,并将它们存储到单选按钮中。但是,我在将变量传递到下一页以运行更新函数时遇到了问题。我以前没有使用过更新功能,我很难找到其他有同样问题的人。

以下是单选按钮和每个变量值的代码:

$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]);

我想我没有在下一页上正确地绑定值。

如有任何帮助或建议,我们将不胜感激。

您基本上有2个问题第一个

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]);

但是当你有一个错误Hhadnling时,问题应该很容易解决,

当我看到你的代码时,我想,为什么他不使用数组来查看php表单的多个单选按钮数组

相关内容

最新更新