【问题标题】:PHP MySQL How to get variable created in while loopPHP MySQL如何获取在while循环中创建的变量
【发布时间】:2015-04-19 23:34:03
【问题描述】:

我刚开始学习php,我还有很长的路要走,但我真的需要帮助。

所以我有一个页面,登录用户可以在其中创建任务,并且该用户可以选择任务所属的用户。我需要做一个插入查询,我需要登录用户选择的人的 ID。

这是我的 HTML 上方的代码:

$userId = $_SESSION['id'];

$Users = "SELECT * FROM users";
$Result2 = $db->query($Users);

if(isset($_POST['submit'])){
$project = $_POST['Project'];
$task = $_POST['task'];
$user = $_POST['User'];
$date = $_POST['date'];

    $query = "INSERT INTO events (projectId, userId, name, date)
              VALUES ('','', '$task', '$date')";

    $result = $database->query($query);
    echo "it worked";



}

这是我的 HTML 选择标签中的代码,登录用户可以在其中选择人。

<?php

while ($row2 = mysqli_fetch_assoc($Result2)) {
       $uid = $row2['id'];
       $name = $row2['name'];
       $lastName = $row2['lastname'];

       echo "<option>" . $name . " " . $lastName . " " . $uid . "</option>";
         }


 ?>

问题是我需要将$uid 变量放在我的HTML select 元素的whileloop 中,在我的HTML 上方的第一个if 语句中。我已经尝试了一切,但我似乎无法弄清楚如何。它完美地显示了所有用户及其 ID 号,我只需要抓取它们并将它们放入我的 if 语句中。

【问题讨论】:

  • 我尝试给它一个空变量然后回显它,但它不起作用......
  • &lt;option value="$uid"&gt; .... 那么它应该在$_POST['whateveryourselectfieldiscalled']中可用
  • 谢谢,我不敢相信我一整天都坚持这一天!
  • 讨厌那些你看不到的简单

标签: php html mysql while-loop


【解决方案1】:

您的&lt;option&gt;标签肯定在&lt;select&gt;标签中。您必须为您的选择命名,该名称将是您可以在 PHP 服务器端代码中使用的 POST 参数名称。 此外,您必须为每个选项分配一个 value 属性。

你的 HTML 打印程序变成了

<?php

echo '<select name="uid">';
while ($row2 = mysqli_fetch_assoc($Result2)) {
       $uid = $row2['id'];
       $name = $row2['name'];
       $lastName = $row2['lastname'];

       echo "<option value='".$uid."'>" . $name . " " . $lastName . " " . $uid . "</option>";
         }
echo '</select>';  

 ?>

你的 PHP 服务器端代码变成了

$userId = $_SESSION['id'];

$Users = "SELECT * FROM users";
$Result2 = $db->query($Users);

if(isset($_POST['submit'])){
$project = $_POST['Project'];
$task = $_POST['task'];
$user = $_POST['User'];
$date = $_POST['date'];

$uid = $_POST["uid"];

$query = "INSERT INTO events (projectId, userId, name, date) VALUES ('','', '$task', '$date')";
$result = $database->query($query);
echo "it worked";
}

如果您正在学习 PHP,我建议您正确开始。永远不要在不清理您的输入的情况下直接访问您的超全局参数 $_GET 和 $_POST。使用一些函数,如filter_input()

【讨论】:

  • 如果您要提及清理数据,您至少可以提及prepared statementsparameter binding,以及为什么要这样做。
  • 当然,但在这种情况下不是。他说他在学习,像这样的问题给出10页长的答案是没有用的。也许他已经意识到了这一点,我只是给了一个链接,他可以按照自己的方式学习。如果他想更深入,他可以打开另一个专门的问题;清理输入不是您可以随便讨论的问题。
  • 我不同意。如果没有对“为什么”的基本描述,简单地说“永远不要这样做”和“总是那样做”是没有用的。
  • 在任何情况下我都没有说“永远不要这样做”,我是在查看源代码后说的,他将 POST 变量直接放在他的数据库中。不,在这种情况下没有例外,因为您通过 HTML 表单接收输入。不管怎样,我尊重你的观点,即使我不同意。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-07
  • 2012-06-01
  • 2017-05-02
  • 1970-01-01
  • 2019-10-04
  • 2013-06-12
  • 2012-10-18
相关资源
最近更新 更多