【问题标题】:How can i execute a php query from an html form?如何从 html 表单执行 php 查询?
【发布时间】:2018-05-10 07:55:39
【问题描述】:

我知道 php 是一种服务器端语言,而 html 是一种客户端语言,为此我会使用 javascript,但我不知道该怎么做。 有人可以帮我编写名为 changeFunction() 的脚本吗?


这是我在 index.php 中的表单:

<form method="POST">
            <div class="row"style="margin-top: 5%;">
                <div class="col-3">

                </div>
                <div class="col-6">
                   <label for="inputUsername">Insert username</label>
                   <input type="text" class="form-control" name="inputUser" style="margin-bottom: 2%">
                   <div class="input-group mb-3">
                    <div class="input-group-prepend">
                      <label class="input-group-text" for="inputGroupSelect01">Convert account type to: </label>
                    </div>
                    <select class="custom-select" id="inputGroupSelect01" name="inputSelected">
                      <option selected>Choose...</option>
                      <option value="admin">Admin</option>
                      <option value="user">User</option>
                    </select>
                       <button type="button" class="btn btn-outline-primary" onclick="changeFunction()">Submit</button>
                  </div>
                </div>
                <div class="col-3">
                </div>
            </div>
        </form>

这是我在 query.php 中的查询:

 <?php     
 $var1= $_POST["inputGroupSelect01"];
 $var2= $_POST["inputUser"];
 require 'connection.php';
 $sql = "UPDATE user SET typeAcc =".$var1." WHERE username=".$var2;
 ?>

【问题讨论】:

标签: javascript php html mysql sql


【解决方案1】:

我希望这是您想要的解决方案。

首先在你的html表单中添加以下div &lt;div id='resultDiv' &gt;&lt;/div&gt;

所以你的html表单代码是这样的

<form method="POST" >
        <div class="row"style="margin-top: 5%;">
            <div class="col-3">
                <h2>Testing Form</h2>
            </div>
            <div class="col-6">
               <label for="inputUsername">Insert username</label>
               <input type="text" class="form-control" name="inputUser" style="margin-bottom: 2%" id="inputUser">
               <div class="input-group mb-3">
                <div class="input-group-prepend">
                  <label class="input-group-text" for="inputGroupSelect01">Convert account type to: </label>
                </div>
                <select class="custom-select" id="inputGroupSelect01" name="inputSelected">
                  <option selected>Choose...</option>
                  <option value="admin">Admin</option>
                  <option value="user">User</option>
                </select>
                   <button type="button" class="btn btn-outline-primary" onclick="changeFunction()">Submit</button>
              </div>
              <!-- this need to be added -->
              <div id='resultDiv' ></div>
            </div>
            <div class="col-3">
            </div>
        </div>
    </form>

第二次将 jQuery 和以下脚本添加到您的代码中

两个 jquery 变量定义了 userNamerole,它们后来被传递为 data 如果服务器响应为SUCCESS,则执行成功条件,或者您可以通过设置ERRORYOUR ERROR TEXT 来发送数据或特定错误消息

 <script src="https://code.jquery.com/jquery-3.3.1.min.js" 
     integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="   
      crossorigin="anonymous"></script> 

    <script type='text/javascript'>

           function changeFunction(){
          var userName = $('#inputUser').val();
          var role     =$('#inputGroupSelect01').val();

         $.ajax({
           method: "POST",
           url: "server.php",
           data: JSON.stringify( { "userId": userName, "userRole": role } ),
           dataType: "text",

           success: function (response){
               if(response=='SUCCESS'){
                  $('#resultDiv').append('<br/>Successful Updated'+response);

            }else{
                $('#resultDiv').append('<br/>Error'+ response);
            }
        }

        });
      }
  </script>

**第三**你必须使用以下代码编写新的server.php文件

<?php     
    $var1= $_POST["userId"]; // change here userId as used in jquery block 
    $var2= $_POST["userRole"];// change here userRole as used in jquery  Block
     //require 'connection.php';
     $sql = "UPDATE user SET typeAcc =".$var1." WHERE username=".$var2;

    //suppose query is executed successfull then 
    //it will return no of rows updated


   $query_result = mysql_query($query);
   //SUCCESS_CONDITION is normally if number of row updated is 1 in return 
   ///of query execution so kindly define by your own way 

   $num_rows = mysql_num_rows($query_result);
   //if($num_rows==1 || define your own SUCCESS_CONDITION){
   if($num_rows ==1){ 
     $result ='SUCCESS';
   }else{
      $result ='ERROR';
   }

  echo $result;
?>

我希望它会有所帮助 谢谢 如有需要请寻求帮助

【讨论】:

  • 它有效。我编辑了你的一小部分 PHP 代码,因为对我不起作用。
  • 从这里到php文档结尾:$query_result = mysql_query($query);我还编辑了查询: $sql = 'UPDATE user SET typeAcc ="'.$var1.'" WHERE username="'.$var2'"';
【解决方案2】:

您可以使用 PHP 执行此操作,但需要检查 $_POST 数据。

if(isset($_POST['inputGroupSelect01']) && isset($_POST['inputUser;]){
$var1= $_POST["inputGroupSelect01"];
 $var2= $_POST["inputUser"];
 require 'connection.php';
 $sql = "UPDATE user SET typeAcc =".$var1." WHERE username=".$var2;
}

顺便说一句,该代码完全易受攻击。您从用户那里获取 2 个输入并直接放置它们,然后将它们放入 SQL 查询中。

如果我对 var2 的输入是 '; DROP TABLE user; 怎么办?

【讨论】:

    猜你喜欢
    • 2015-02-10
    • 2021-02-19
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    • 2015-09-29
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    相关资源
    最近更新 更多