使用php pdo在sqlite数据库中插入多个复选框的值

Posted

技术标签:

【中文标题】使用php pdo在sqlite数据库中插入多个复选框的值【英文标题】:Insert value of multiple checkbox in sqlite database using php pdo 【发布时间】:2021-08-06 14:33:12 【问题描述】:

您好,我有多个复选框,名称为 make 和 female但它也会出错

Undefined index: Female in /storage/sdcard1/www/3/signup/index.php on line 11

但我不希望出现此错误,并且我希望 if 女性不选择它插入 false 并且不显示错误我不希望选中的复选框值为 true,因为它是在数据库中写入的

代码索引.php

<?php 
if(isset($_POST['submit']))
    
$conn = new PDO("sqlite: sign.db");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $Email = $_POST['Email'];
    $First = $_POST['First'];
    $Last = $_POST['Last'];
    $Password = $_POST['Password'];
    $Male = $_POST['Male'];
    $Female =$_POST['Female'];
     $Dateofb = $_POST['Dateofb'];
  require_once 'imp.php';
    

?>
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="index.css"  >
<script src="index.js" ></script>
<title>Survey</title>
</head>
<body>
<form action="" method="post"  >
<div class="container" >
<div class="form" >

<input type="email" class="first"  id="Email" name="Email" placeholder="Email" required="required">
<input type="text" class="second"  id="First" name="First" placeholder="First name" required="required">
<input type="text" class="last"  id="Last" name="Last" placeholder="Last name" required="required">
<input type="password" class="pass" name="Password" id="Password" placeholder="Password" required="required">

<div class="day" >

<p class="bd" >Birthday Date:</p>

<input type="date" class="date" id="Dateofb" name="Dateofb" >

</div>
<div>
<div class="malee" >
<input type="checkbox" class="male" id="Male" name="Male">
<p class="mal" >Male</p>
</div>
<div class="femalee" >
<input type="checkbox" class="female" id="Female" name="Female" >
<p class="fem" >Female</p>
</div>
</div>
<div >
<input class="submit" id="submit" type="submit" name="submit"  >
</div>
<div class="acc" >
already have account <a href="#" >Login</a>
</div></div>
</div>
</form>
</body>
</html>
        

代码 imp.php

<?php

    
$sql = "INSERT INTO signup (`Email`, `First`, `Last`, `Password`, `Male`, `Female`, `Dateofb`) VALUES ('$Email', '$First', '$Last', '$Password', '$Male', '$Female', '$Dateofb');";
 
    // use exec() because no results are returned
    $conn->exec($sql);
    echo "New record created successfully";
    $conn->connection = null;
?>

【问题讨论】:

这能回答你的问题吗? "Notice: Undefined variable", "Notice: Undefined index", and "Notice: Undefined offset" using PHP 只提交选中的复选框。您需要检查是否在 $_POST 中设置了框的名称并手动分配您希望使用的值。 好的,我会尝试分配一个值,但是如果我不选择女性怎么办,女性上设置的值仍然会得到输入 未选中的框根本不会出现在$_POST 中。因此,您需要使用isset 选中所有复选框。如果它们没有设置,那么你可以给你的变量一些你想要的默认值(你提到了false)。 【参考方案1】:

问题是只提交了选中的框。 您需要检查是否在 $_POST 中设置了框的名称,如果没有: 手动分配您希望使用的值

即使用这个short hand if/else

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

【讨论】:

虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。 @mufazmi。好点子。我会相应地改进答案 这解决了您的问题吗?见:***.com/help/someone-answers

以上是关于使用php pdo在sqlite数据库中插入多个复选框的值的主要内容,如果未能解决你的问题,请参考以下文章

PHP、PDO、MySQL - 多个 INSERT 容易被注入? [复制]

PDO json插入多个标签

如何使用 Zend_Db 获取 Sqlite 数据库的最后插入 ID

在 PHP 中设置 SQLite3 PDO 驱动程序

PHP,PDO,SQLite INNER JOIN语句和变量

在 SQLite3 和 PHP 中使用准备好的语句