【问题标题】:PHP and SQL - How can I make this ID into a variable?PHP 和 SQL - 如何将此 ID 转换为变量?
【发布时间】:2018-03-20 12:47:20
【问题描述】:

我正在制作一个 PHP 网站,我希望在您订购门票时将我的用户 ID 加载到门票表中。有一个网页,您可以在其中选择门票、金额,并且 ID 已作为标签给出。

第一个代码将数据添加到我的数据库中

    function best(){
    global $db, $errors;

    // receive all input values from the form
    $ticket     = e($_POST['tickety']);
    $aantall    = e($_POST['aantal']);
    $usidd      = e($_POST['usid']);

    // form validation: ensure that the form is correctly filled
    if (empty($ticket)) { 
        array_push($errors, "Ticket is verplicht"); 
    }
    if (empty($aantall)) { 
        array_push($errors, "Aantal is verplicht"); 
    }

    // order ticket if there are no errors in the form
    if (count($errors) == 0) {
            $con = new PDO("mysql: host=localhost; dbname=website", "root", "");

            mysqli_query($db, $query);
            $_SESSION['success']  = "Ticket besteld";
            header('location: index.php');
            $query = "INSERT INTO tickety (ticket, aantal, userid) 
                      VALUES('$ticket', '$aantall', '$usidd')"; 
            mysqli_query($db, $query);


        }
    }

这段代码定义了输入字段

<form method="post" action="ticketpag.php">

    <?php echo display_error(); ?>
    <div class="input_group">
        ID
        </br>
        <input type='hidden' name='usid'>
        <h4><?php
        echo $_SESSION['user']['id']; 
        ?></h4>
        </input>
        Ticket
        </br>
        <select name='tickety'>

            <?php
            $query = "SELECT * FROM `stok`";
            $result = mysql_query($query);
            while($row=mysql_fetch_array($result, MYSQL_ASSOC)){                                                 
            echo "<option>".$row['naam']."</option>";
            }
            ?>
        </select>
        </br>
        Aantal
        </br>
        <select name="aantal">
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
                <option value="4">4</option>
                <option value="5">5</option>
                <option value="6">6</option>
                <option value="7">7</option>
                <option value="8">8</option>
                <option value="9">9</option>
                <option value="10">10</option>
                <option value="11">11</option>
                <option value="12">12</option>
                <option value="13">13</option>
                <option value="14">14</option>
                <option value="15">15</option>
                <option value="16">16</option>
                <option value="17">17</option>
                <option value="18">18</option>
                <option value="19">19</option>
                <option value="20">20</option>
            </select>
    </div>
    <div class="input-group">
        <button type="submit" class="btn" name="bestel_btn"> Bestellen</button>
        &nbsp; <a href="index.php"> Terug</a>
    </div>
</form>

【问题讨论】:

  • 你在哪里有input/textareaname=usid
  • 在重定向标头(即header('location: index.php');)之后执行代码不是一个好习惯。在此之前你应该做所有你需要做的事情,然后die(); 以确保当前页面不会泄漏任何数据。
  • P.S.你为什么混合mysql_mysqli_?不。 mysql_ 已经死了,首先。 (见php.net/manual/en/intro.mysql.php
  • 不是这个问题,我要先解决这个问题
  • @JopRill 当您在echo $_SESSION['user']['id']; 中看到best() 时会看到什么?您不应该使用 POST 来提供现有的 SESSION 数据。

标签: php sql variables key label


【解决方案1】:

添加 $_SESSION['user']['id'];到输入字段而不是标签,它应该可以工作。

例子:

<input type="hidden" name="usid" id="usid" value="<?php echo $_SESSION['user']['id'];?>" />

隐藏字段不会向用户显示。

补充: 但是,正如@mickmackusa 所提到的,使用 POST 请求发送现有的 SESSION 数据是一种不好的做法。而是测试并查看当您在 best() 中回显 $_SESSION['user']['id'] 时会发生什么。您不应该使用 POST 来传递现有的 SESSION 数据。

【讨论】:

  • 你会建议哪个领域?
  • 这仍然没有在我的数据库中给我一个用户 ID
  • @JopRill 如果您回显 $_SESSION['user']['id']; 会发生什么对浏览器的价值?它显示了价值吗?输入字段是 from 的一部分吗?
  • 在网页上它显示了正确的 ID,但我认为名称 usid 没有链接到它或其他什么,我不知道如何修复它
  • @JopRill 您能否更新您的问题并将整个表单添加到其中?您必须确保隐藏的输入字段也是表单的一部分。
猜你喜欢
  • 1970-01-01
  • 2010-12-12
  • 1970-01-01
  • 2023-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-02
  • 1970-01-01
相关资源
最近更新 更多