【问题标题】:How can I match a user id value from a form input to records in my database?如何将表单输入中的用户 ID 值与数据库中的记录相匹配?
【发布时间】:2015-03-12 09:49:52
【问题描述】:

您好,我正在尝试将表单输入中的用户 ID 值与我的数据库中的记录相匹配。我试图在下拉选择菜单中显示与表单输入中的用户 ID 值匹配的数据列(项目名称)。我不知道我是否正确定义了我的变量或我做错了什么,但看不到我错过了什么。任何帮助是极大的赞赏。谢谢。

<?php

// Create the connection to the database
$con=mysqli_connect("xxx","xxx","xxx","xxx");


// Check if the connection failed
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  die();
}



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

   $query = "SELECT itemname
        FROM seguin_orders
  WHERE username = '".($userid)."'";

    $result = mysqli_query($con,$query);
}
?>

带下拉菜单

<form action="xxx" method="post" name="form1">


<select name="xxx"><option value="">-- Select One --</option>


 <?php 

        while ($row = mysqli_fetch_assoc($result)) 
        {
         echo '<option value =" ' . $row['itemname'] . ' ">' . $row['itemname'] . '</option>';
        }
    ?>

</select>


<input id="input1" name="input1" type="text" />

</br>

<input id="userid" name="userid" type="text" value="demo@gmail.com" readonly="readonly"/>



<button type="submit" value="Submit">Submit</button>


</form>

【问题讨论】:

  • $query = "SELECT itemname FROM seguin_orders WHERE username = '".($userid)."'";
  • 我收到解析错误:语法错误,文件意外结束
  • 尝试在 WHERE username = '".($userid)."' 后添加分号
  • }放在第一个例子中关闭php标签之前。你打开了 if 语句,但没有关闭它
  • 在while循环中}之后不需要;

标签: php forms mysqli


【解决方案1】:

你犯了两个错误

你错过了 if 条件结束 } 的结尾,并删除分号;从while循环也缺少字符串结尾。

简而言之,您需要一个好的 IDE 来告诉您代码中的基本错误

【讨论】:

    【解决方案2】:

    尝试将代码的 echo 更改为类似的内容-->

    echo "<option value =\"". $row['itemname'] ."\">". $row['itemname'] . "</option>";
    

    或尝试使用 mysqli_fetch_array() 而不是 mysqli_fetch_assoc()

    And More Over 将您的 sql 查询更改为类似这样的内容

    $query = "SELECT itemname FROM seguin_orders WHERE username = '$userid'";
    

    【讨论】:

      【解决方案3】:

      ==AJAX 表单解决方案==

      orders.php

      <?php
      
      // Create the connection to the database
      $con=mysqli_connect("xxx","xxx","xxx","xxx");
      
      
      // Check if the connection failed
      if (mysqli_connect_errno()) {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
        die();
      }
      
      
      
        if (isset($_GET['userid']))
      {
          $userid= $_GET['userid'];
      
         $query = "SELECT itemname
              FROM seguin_orders
        WHERE username = '".($userid)."'";
      
          $result = mysqli_query($con,$query);
      
          while ($row = mysqli_fetch_assoc($result)) 
              {
               echo '<option value =" ' . $row['itemname'] . ' ">' . $row['itemname'] . '</option>';
              }
      }
      ?>
      

      带有表单的原始页面

      这只是基本而简单的,供您理解。您可以更改它并使其更安全。请阅读 cmets 了解

      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>Document</title>
      </head>
      <body>
      
      <form action="#">
          <div class="pre-dropdown">  <!-- This class is here to hide this mini form after submit with jquery -->
              <input type="text" name="userid" id="userid">
              <button id="submitId">Submit Id</button>
          </div>
      
          <div class="dropdown">  <!-- This is hidden because there is no data, but when userid is submited, this will be visible -->
              <select name="xxx" id="dropdown-select">
                  <option value="">-- Select One --</option>
              </select>
          </div>
      </form>
      
      <script src="http://code.jquery.com/jquery.min.js"></script>
      
      <script>
           $(function(){
      
              $('.dropdown').hide();  // Hide dropdown div when page is loaded, mbetter way will be with css, but it's enough for now
      
      
              $('#submitId').on('click', function(e){  // Things to do when 'Submit Id' button is clicked
                  var userid = $('#userid').val(); // Grab user id from text field
                  e.preventDefault(); // Prevent form from submit, we are submiting form down with ajax.
      
                   $.ajax({
                    url: "orders.php",
                    data: {
                      userid: userid
                    }
                  }).done(function(data) {
                      $('.pre-dropdown').hide();  // Hide mini form for user id
                     $('.dropdown').show(); // show dropdown
                    $('#dropdown-select').append(data); // append results from orders.php to select
                  });
              });
           });
      </script>
      </body>
      </html>
      

      按您需要的方式更改表格。我隐藏了pre-dropdown,因为如果用户再次提交userid,我们将追加两次结果。

      【讨论】:

      • 解释和分解它的超级工作......你的怪物太棒了!非常感谢您的帮助和时间。我不得不改变 WHERE username = '".($userid)."'"; -to- WHERE userid = '".($userid)."'"; ....让它工作,但最重要的是它完美地工作!我希望并祝你好运……你真的为我带来了改变。我花了很长时间试图理解这一点,没有人能得到我想要的我不知道如何解释它......但是你明白了它能够帮助我非常感谢!!!我知道每个看到这篇文章的人都会从你那里获得很多知识......谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-26
      • 1970-01-01
      • 1970-01-01
      • 2015-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多