如何在带有用户输入字段的 html 页面上执行 sql 命令,并在同一页面上显示结果

use*_*013 0 html javascript php sql ajax

我写一个命令,或者我从用户输入字段填写参数值。单击按钮,将此命令发送到 php 并将结果值发送回 html 以显示。例如。在 html 页面上:

select ___ from ____, 
Run Code Online (Sandbox Code Playgroud)

我用“tablenameone”和“valueone”填充了两个可用的输入字段。然后,结果将打印在同一页面的 html 文本字段上。

我所知道的是这些值可以以这种格式发送(也许)

$('input[name="talbename"]') 
$('input[name="value"]')
example.com?tablename=tablenameone&value=valueone
Run Code Online (Sandbox Code Playgroud)

从 php 端我使用

 $sql="SELECT '$_GET['value']' FROM '$_GET['tablename']';
Run Code Online (Sandbox Code Playgroud)

我不知道的是....我应该如何在点击功能中执行此操作?它肯定使用ajax。但是我怎么能产生example.com?tablename=tablenameone&value=valueone 我应该把 $('input[name="value"]')

提前致谢

Fen*_*ton 5

您不得在查询中使用直接输入,因为您将容易受到SQL 注入攻击

$sql="SELECT '$_GET['value']' FROM '$_GET['tablename']';
Run Code Online (Sandbox Code Playgroud)

相反,请使用以下内容:

$column = $_GET['value'];
$table = $_GET['tablename'];
$sql = sprintf("SELECT %s FROM %s;",
             mysql_real_escape_string($column),
             mysql_real_escape_string($table));
Run Code Online (Sandbox Code Playgroud)

尽管您仍然通过向人们提供一个页面来告诉他们您所有的表和列名称来暴露过多的“内部信息”!

不管怎样,这里有一个完整的例子;

<form method="post" action="">
    <fieldset>
        <legend>Select Data</legend>
        <p><label>Table<br>
        <select name="table">
            <option value="tblStudents">Students</option>
        </select></label></p>
        <p><label>Table<br>
        <select name="column">
            <option value="firstname">First Name</option>
            <option value="lastname">Last Name</option>
        </select></label></p>
        <p><input type="submit" name="submit" value="submit">
    </fieldset>
</form>
<?php
$connection = mysql_connect("servername:3306", "user", "password") or die ('Error connecting to mysql');

mysql_select_db("databasename");  

$column = mysql_real_escape_string($_POST['column']);
$table =  mysql_real_escape_string($_POST['table']);
$sql = sprintf("SELECT %s FROM %s;",
        $column,
        $table);

$result = mysql_query($sql) or die(mysql_error());

echo '<ul>';
while($row = mysql_fetch_array($result)) { 
    echo '<li>' . $row[$column] . '</li>';
}
echo '</ul>';

mysql_close($connection); 
?>
Run Code Online (Sandbox Code Playgroud)