PHP PDO-如何用已经包含当前数据库值的单选按钮值更新数据库



更新为更相关。

我对PHP相当陌生,如下所示。但我目前正在生成数据库并将值存储在单选按钮中,如果更改为发送新值并更新数据库,我希望发送新值,但我很难找到任何关于用PHP更新的材料。代码还有更多内容,因为这只是相关位的一个片段。所有的左括号也有相应的闭合。

try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("Select SID, ClassID,StudentName, Week_1, Week_2, Week_3, Week_4, Week_5, Week_6, Week_7, Week_8, Week_9, Week_10 FROM weekbyweek");
$stmt->bindColumn('SID', $SID);
$stmt->bindColumn('ClassID', $ClassID);
$stmt->bindColumn('StudentName', $StudentName);    
$stmt->bindColumn('Week_1', $week_1);
$stmt->bindColumn('Week_2', $week_2);
$stmt->bindColumn('Week_3', $week_3);
$stmt->bindColumn('Week_4', $week_4); 
$stmt->bindColumn('Week_5', $week_5);
$stmt->bindColumn('Week_6', $week_6);
$stmt->bindColumn('Week_7', $week_7);
$stmt->bindColumn('Week_8', $week_8);
$stmt->bindColumn('Week_9', $week_9);
$stmt->bindColumn('Week_10', $week_10);
$stmt->execute();
print ("<form action='Table/Update2.php' method='post'><tr>");
//print a cell
print ("<td> $SID </td>");
print ("<td> $ClassID </td>");
print ("<td> $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++;  print ("</table>");
print ("<input type='submit' name='submit' value='update' onclick='updateDB'/></form>");

上面成功地将数据库值打印为1和0。然而,我正在努力将新值更新到数据库中,如下所示。

function updateDB ($db) {
$week1 = ( isset($_POST['Week_1']) ? '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');
try { 
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sqlQuery = "Update weekbyweek SET  Week_1=?, Week_2=?, Week_3=?, Week_4=?, Week_5=?, Week_6=?, Week_7=?, Week_8=?, Week_9=?, Week_10=?";
$statement->prepare($sqlQuery)->execute(['?','?','?', $name1, $name2, $name3,$name4,$name5,$name6, $name7, $name8,$name9,$name10]);

$statement = $conn->prepare($sqlQuery);
$statement->execute();
}
}
UpdateDB();

我不知道如何100%更新值,但我已经做到了。。。关于更新多个值的阅读似乎有限,因此任何帮助或建议都是最重要的。

如有任何帮助,我们将不胜感激。谢谢奥利

您可以使用

isset

检查单选按钮是否已选中/取消选中,因为如果未选中,表单将不会发送任何特定名称的表单数据。

例如,要获取单选按钮的值:-

$week1_value = ( isset($_POST['Week_1']) ? '1':'0' );

最新更新