【问题标题】:A database is not updated if some values are not filled in the form [duplicate]如果表格中未填写某些值,则不会更新数据库[重复]
【发布时间】:2021-03-13 07:27:38
【问题描述】:

我正在尝试从 GUI 更新 SQL 数据库。如果我填写表单中的所有字段,它会起作用,但如果任何字段为 NULL 或为空,则不会更新任何内容。不会抛出错误,但数据库不会在 phpmyadmin 中更新。 我希望能够接受 NULL 和空字段,包括能够擦除字段中的内容。

我不是程序员,所以我希望能解释一下如何处理这些空字段。

<?php
include ("connection.php");
include ("foundation.php");
?>

<!DOCTYPE html>
<html>
    <head>
        <title>PHP UPDATE DATA USING PDO</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <form name="frmUser" method="post" action="">
            <input type="text" name="id" required placeholder="id"><br><br>
            <input type="text" name="person" required placeholder="person"><br><br>
            <input type="text" name="dob" required placeholder="dob"><br><br>
            <input type="text" name="dod" required placeholder="dod"><br><br>
            <input type="submit" name="update" required placeholder="Update Data">
        </form>
    </body>
</html>

<?php
if(isset($_POST['update']))
{
    // get values from input text and number
    $id = $_POST['id'];
    $person = $_POST['person'];
    $dob = $_POST['dob'];
    $dod = $_POST['dod'];
    
    // mysql query to Update data
    
    $pdoquery = "UPDATE people SET id=:id, person=:person,dob=:dob,dod=:dod WHERE id='" . $_GET['id'] . "'";
    $pdoQuery_run = $pdocbcon->prepare($pdoquery);
    $pdoQuery_exec = $pdoQuery_run->execute(array(":person"=>$person,":dob"=>$dob,":dod"=>$dod,":id"=>$id));
    
    if($pdoQuery_exec)
    {
        echo 'Uppdaterat';
    }
    else
    {
        echo 'FEL';
    }

}

?>


【问题讨论】:

  • 您想用空值更新还是要确保该字段根本不为空?
  • 嗨!我希望能够使用 NULL 值进行更新。
  • 但是您需要 id 字段来更新任何内容。该字段不能为空。我已经改变了我的答案。请检查。
  • 没错。 ID 是唯一不能为 NULL 的字段。
  • 其他字段是否允许为空和数据库?

标签: php sql pdo


【解决方案1】:

ID 值不能为空,因此必须在前端插入它,并且在数据库中您需要允许所有其他列为空。

if(isset($_POST['update']))
{
    // get values from input text and number
    $id = $_POST['id'];
    $person = $_POST['person'];
    $dob = $_POST['dob'];
    $dod = $_POST['dod'];

 if(empty($id)){
            echo("Missing Information! You must input ID");

【讨论】:

  • 这段代码中没有空值,因此与问的问题无关
  • 你是对的。只有空字符串。
猜你喜欢
  • 2011-08-02
  • 1970-01-01
  • 2016-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多