【问题标题】:Get ID from inserted row so the table can get updated with a new value从插入的行获取 ID,以便表可以使用新值更新
【发布时间】:2019-02-15 23:32:20
【问题描述】:

只是尝试一些不同的东西并遇到这个问题。 我将一些不同的表值回显到示例站点上,然后从下拉菜单中我想将数据从 1 更改为 2。我只是使用表单操作来执行此操作,但是问题是,当我输出 10 个不同的行时,如何使用下拉菜单获取该确切行的 ID? Atm 我只在使用此代码时将所有行值从 1 更改为 2:

PHP

if (isset($_POST['insert2']))
{
    $status2 = $_POST['status2'];

    $sql2 = ("UPDATE test3 SET status='$status2' WHERE id=id");

    if (mysqli_query($conn, $sql2)) {
    header("Location: index.php");
    exit;
} else {
    echo "Error: " . $sql2 . "<br>" . mysqli_error($conn);
}}

带有回显的 HTML

<?php while($row = mysqli_fetch_assoc($result)) { echo 
'<div class="box">
    <div class="box-id">
        <p class="box-id-text">Bonus id: ' . $row ['id'] . '</p>
    </div>
    <div class="box-date">
        <p class="box-date-text">Date laget: ' . $row ['date'] . '</p>
    </div>
    <div class="box-status">
        <div class="box-endre-status">
            <p class="box-status-text">Status: Pending,</p>
            <form action="" method="post">
                <select name="status2" class="endre-status">
                    <option value="" disabled selected>Endre status</option>
                    <option value="1">1</option>
                    <option value="2">2</option>
                </select>
                <input type="submit" name="insert2" value="Oppdater">
            </form>
        </div>
    </div>
</div>';}?>

对此非常陌生,如果有人能在正确的方向上帮助我,将不胜感激。

【问题讨论】:

    标签: php sql phpmyadmin row


    【解决方案1】:

    您的问题是您没有传递 id 值来更新您的表单。您可以通过在表单中​​添加隐藏输入来解决此问题;在&lt;form action="" method="post"&gt; 之后添加类似这样的内容:

    <input type="hidden" name="id" value="' . $row['id'] . '">
    

    然后在你的 PHP 中,添加

    $id = $_POST['id'];
    

    $status2 = $_POST['status2']; 之后并将您的UPDATE 查询更改为

    $sql2 = ("UPDATE test3 SET status='$status2' WHERE id=$id");
    

    如果id 是一个字符串,您需要在上面的行中用引号将其括起来。

    您的下一个问题将是您容易受到 SQL 注入的攻击。为避免这种情况,您将需要使用准备好的语句。 This question 对如何做到这一点有很好的解释,您还可以查看 MySQLi 准备语句 here 的 PHP 手册页。

    【讨论】:

    • 非常感谢您的精彩解释。我设法制作了与您所做的类似的东西,但是您隐藏输入字段的方式要好得多,因此我将其更改为这个。 :) 另外我稍后会谈到 SQL 注入,只是想先了解一下这方面的基础知识。谢谢!
    • @Seb 不用担心。很高兴我能帮上忙。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-03
    • 2021-03-30
    • 1970-01-01
    • 2011-08-16
    • 2020-09-10
    • 2014-07-21
    相关资源
    最近更新 更多