簡體   English   中英

從下拉菜單中運行 SQL 腳本

[英]Run an SQL Script from a drop down menu

我正在嘗試創建一個下拉菜單並根據每個選項值運行特定的 SQL 腳本。

php 代碼的一部分是這樣的(我讓標簽更容易讓您理解我想要的):

 <div class="form-group RunningSQLScripts">
    <label for="inputStatus">Running My Scripts</label>
        <select id="inputStatus" name="RunningSQLScripts" class="form-control">
        <option selected disabled>--</option>
        <option value="RunScript1">Delete Whole Table</option>
        <option value="RunScript2">Run Script 3</option>
                                    
        </select>
 </div>

假設 RunScript1 應該運行 SQL 命令截斷表 table_name1。 我怎樣才能從 php 菜單中做到這一點?

您可以將表單提交到服務器並執行您需要的請求。

<?php
  $db = new mysqli('localhost', 'db_user', '1234', 'db_name');
  if($db->connect_errno)die('Error: '.$db->connect_error);
?>

<form name="runSQL" method="get">
    <div class="form-group RunningSQLScripts">
        <label for="inputStatus">Running My Scripts</label>
            <select id="inputStatus" name="RunningSQLScripts" class="form-control">
            <option selected disabled>--</option>
            <option value="RunScript1">Delete Whole Table</option>
            <option value="RunScript2">Run Script 3</option>                   
            </select>
            <input type="submit" value="Run">
     </div>
</form>

<?php
    $runSQL = $_GET['RunningSQLScripts'];
    
    switch($runSQL){
        case 'RunScript1':
            $db->query("truncate table `name`");
            echo '* Successfully deleted *';
        break;
        
        case 'RunScript2':
            $db->query("SQL");
            echo '* Successfully run *';
        break;
    }
?>

最簡單的方法是使用onclick=然后使用 name_of_function();

例如:

 <div class="form-group RunningSQLScripts">
    <label for="inputStatus">Running My Scripts</label>
        <select id="inputStatus" name="RunningSQLScripts" class="form-control">
        <option selected disabled>--</option>
        <option onclick="RunScript1()">Delete Whole Table</option>
        <option onclick="RunScript2()">Run Script 3</option>
                                    
        </select>
 </div>

然后根據函數的名稱。 創建適當的函數以在點擊時運行。

我剛剛為你編寫了這個:) 完整的工作,你可以讓它變得更好。 只需添加 onchange='this.form.submit();'

<form id="companyForm" name="companyForm" class="form-horizontal" type=get>


<div class="form-group RunningSQLScripts">
    <label for="inputStatus">Running My Scripts</label>
    <select id="inputStatus" name="RunningSQLScripts" onchange='this.form.submit();' class="form-control">
        <option selected disabled>--</option>
        <option value="RunScript1">Delete Whole Table</option>
        <option value="RunScript2">Run Script 3</option>
                                    
        </select>
 </div>

</form>


<?php
$RunningSQLScripts = $_GET['RunningSQLScripts'];

$con = mysqli_connect('host','username','password','db');
if (!$con) {
    die('Could not connect: ' . mysqli_error($con));
}

mysqli_select_db($con,"db");

if ($RunningSQLScripts == "RunScript1") 
{

$sql="truncate TABLE `table_name1`;";  // truncate table table_name1
$result = mysqli_query($con,$sql);

}

mysqli_close($con);
?>

這是更危險的 - 應用程序容易受到 SQL 注入或普通 SQL 攻擊。

您是否將任何 ORM 用於 php 框架,或者您可以使用stored_procedure

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM