【问题标题】:Edit/update row with php doesn't work / Undefined variable用php编辑/更新行不起作用/未定义的变量
【发布时间】:2018-06-12 12:02:32
【问题描述】:

我的代码有问题:

在编辑页面,我想向用户显示输入框中之前的值

但我不断得到的关于该值的一个错误如下:

注意:未定义变量:C:\xampp\htdocs\website_herkansing\edit_gebruiker.php 中的未定义变量:72

我认为isset/submit 部分有问题,但我只是 想不通。。

这是我正在使用的代码

 <?php

session_start();

define('DB_NAME', 'ochtendgloren');
$servername = "localhost";
$username = "root";
$password = "";
$db = "ochtendgloren";
$tbl = "members";

// Create connection
$conn = new mysqli($servername, $username, $password, $db);
//Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

if (isset($_POST['submit']))
{
    $gebruikers_naam = mysqli_real_escape_string($db, $_POST['gebruikers_naam']);

    htmlentities($gebruikers_naam);

    $id = $_GET['id'];

    $query = "UPDATE members 
    SET gebruikers_naam = '$gebruikers_naam'
    WHERE id = '$id' " ;

    $result = $conn->query($query);

    if($result){
        echo ("<SCRIPT LANGUAGE='JavaScript'>
    window.alert('edit succesvol!')
    window.location.href='admin_members.php';
    </SCRIPT>");
    } 
}
?>

<html>
<head>
    <link rel="stylesheet" href="boekingsform.css">
    <link  rel="stylesheet" href="https://fonts.googleapis.com/css?family=Abel">
</head>

<div class="boeken">
    <h1>Wijzig hier de gebruiker</h1>
    <form action="editrij.php?id=<?= $id ?>"  method="post" >
        <div class="row">
            <div class="col-25">
                <label for="gebruikers_naam"> vul hier de nieuwe gebruikers naam in: </label>
            </div></div>
        <br>
    <div class="row">
        <div class="col-75">
            <input type="text" name="voornaam" required="required" value="<?= $gebruikers_naam['gebruikers_naam'] ?>"/>
        </div>
    </div>
<br>
    <input type="submit" value="submit" name="submit" />
    </form>
</div>
</html>

【问题讨论】:

  • 了解prepared Statements以防止SQL注入
  • 应该是&lt;input type='text' name='gebruikers_naam' /&gt;label 标签不会发送到 php。你知道吗
  • 函数 mysqli_real_escape_string() 需要数据库连接(代码中的 $conn,而不是现在的 $db)mysqli_real_escape_string($conn, $_POST['gebruikers_naam']);
  • @AkintundeOlawale 啊我看到愚蠢的错误,复制了旧代码但忘记更改它,但它仍然没有

标签: php mysql row edit


【解决方案1】:

我认为问题与您的变量用法和输入框名称有关,它必须是gebruikers_naam

在线:

<input type="text" name="voornaam" required="required" value="<?= $gebruikers_naam['gebruikers_naam'] ?>"/>

您只能使用$gebruikers_naam 打印姓名。 此外,在 if 子句中使用它之前,您必须先分配一个全局变量。 只需在变量声明之后分配像$gebruikers_naam = ""; 这样的空值。

【讨论】:

  • 你能帮我解释一下如何使它成为一个全局变量,我就是不明白。
  • 我已经更新了我的答案。还要记住,$gebruikers_naam 不是一个数组。这只是一个变量。
【解决方案2】:

您发送的不是变量 gebruikers_naam,而是 voornaam。这行代码

<input type="text" name="voornaam" required="required" value="<?= $gebruikers_naam['gebruikers_naam'] ?>"/>

应该是

<input type="text" name="gebruikers_naam" required="required" value="<?= $gebruikers_naam['gebruikers_naam'] ?>"/>

此外,由于您在表单中使用了变量 $id 和 $gebruikers_naam,因此您应该在 if 子句之前为它们分配一个值。

【讨论】:

  • 是的,愚蠢的错误,谢谢!更改了它,但我的代码仍然显示相同的错误):
  • 也许问题是您在 html 中使用了 $id 和 $gebruikers_naam,但在您发送表单之前它们没有任何价值。在if (isset($_POST['submit'])) 行之前,您可以进行选择并为其分配一个值。
【解决方案3】:

仍然不能完全确定代码的“流程”是否有意义,但以下内容应该会有所帮助:

        <?php
session_start();

//define('DB_NAME', 'ochtendgloren'); // not used in your code, commented out
$servername = "localhost";
$username = "root";
$password = "";
$db = "ochtendgloren";
$tbl = "members";

// Create connection
$conn = new mysqli($servername, $username, $password, $db);
//Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

if (isset($_POST['submit']))
{
    if(isset($_POST['gebruikers_naam']) && !empty($_POST['gebruikers_naam'])) { // added condition: we need a 'gebruikers_naam'
    $gebruikers_naam = mysqli_real_escape_string($conn, $_POST['gebruikers_naam']);     // changed $db to $conn

    // the return value (encoded string) of htmlentities is not used in your code
    // so commented it out
    //htmlentities($gebruikers_naam); 

    $id = $_GET['id'];

    $query = "UPDATE members 
    SET gebruikers_naam = '$gebruikers_naam'
    WHERE id = '$id' " ;

    $result = $conn->query($query);
    }

    if($result){
        echo ("<SCRIPT LANGUAGE='JavaScript'>
    window.alert('edit succesvol!')
    window.location.href='admin_members.php';
    </SCRIPT>");
    } else {                                                // added else {} statement
    echo "<script> alert('Error: could not update the database'); </script>"; // added: error message
    }       
}
?>

<html>
<head>
    <link rel="stylesheet" href="boekingsform.css">
    <link  rel="stylesheet" href="https://fonts.googleapis.com/css?family=Abel">
</head>

<div class="boeken">
    <h1>Wijzig hier de gebruiker</h1>
    <form action="editrij.php?id=<?php echo $id; ?>"  method="post" > <!-- you need to echo $id and close with ';' - changed: echo $id; -->
        <div class="row">
            <div class="col-25">
                <label for="gebruikers_naam"> vul hier de nieuwe gebruikers naam in: </label>
            </div></div>
        <br>
    <div class="row">
        <div class="col-75">
            <?php $gebruikers_naam = (isset($gebruikers_naam)) ? $gebruikers_naam : 'N/A'; ?> <!-- added a test to see if $gebruikers_naam is available -->
            <input type="text" name="voornaam" required="required" value="<?php echo $gebruikers_naam; ?>"/> <!-- variable is $gebruikers_naam, changed (echo and ';') -->
        </div>
    </div>
<br>
    <input type="submit" value="submit" name="submit" />
    </form>
</div>
</html>

【讨论】:

    猜你喜欢
    • 2018-09-06
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 2019-03-11
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    相关资源
    最近更新 更多