如何在带有用户输入字段的HTML页面上执行SQL命令,并在同一页面上显示结果
how to perform sql command on html page with user input field, and show result on the same page
我写一个命令,或者我填写用户输入字段的参数值。单击该按钮,将此命令发送到PHP,并将结果值发送回HTML以显示。为例。在HTML页面上:
select ___ from ____,
两个可用的输入字段,我用"tablenameone"answers"valueone"填充。然后,结果将被打印在同一页面的HTML文本字段中。
我所知道的是这些值可以(也许)以这样的格式发送
$('input[name="talbename"]')
$('input[name="value"]')
example.com?tablename=tablenameone&value=valueone
在PHP端我使用
$sql="SELECT '$_GET['value']' FROM '$_GET['tablename']';
我不知道的是....我应该如何在点击功能中执行此操作?它肯定使用了ajax。但是我怎样才能生成example.com呢$('input[name="value"]')
D不要在查询中使用直接输入,否则容易受到SQL注入攻击。
$sql="SELECT '$_GET['value']' FROM '$_GET['tablename']';
请使用以下语句:
$column = $_GET['value'];
$table = $_GET['tablename'];
$sql = sprintf("SELECT %s FROM %s;",
mysql_real_escape_string($column),
mysql_real_escape_string($table));
尽管你给人们一个页面,告诉他们所有的表和列名,仍然暴露了太多的"内幕信息"!
无论如何,这里有一个完整的例子;
<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);
?>
似乎没有人真正回答过这个问题(尽管他们都是很好的观点,我假设你这样做是有原因的),我将回答:
$('form[name=formname]').submit(function(e){
e.preventDefault;
var tablename = $('input[name="tablename"]').val();
var value = $('input[name="value"]').val();
$.get("example.php?tablename="+tablename+"&value="+value, function(data){
$('body div').text(data);
})
});
PHP: $sql=mysql_query("SELECT '$_GET['value']' FROM '$_GET['tablename']'")or die(mysql_error());
$sqlOutput = mysql_fetch_array($sql);
echo "<pre>";
print_r($sqlOutput);
echo "</pre>";
显然,将formname
替换为您的表单名称,将body div
替换为您希望输出的元素名称,并在合适的地方替换所有其他标识符。然后在PHP中更改输出以满足您的需要。
再次强调,一定要记住关于SQLi的帖子,因为你自己在那里有一个非常严重的问题。
你真的需要确保你没有对SQL注入开放。
你可以使用mysql prepared语句
或
使用php函数mysql_real_escape_string($_GET['value'])
阅读这个线程:如何在PHP中防止SQL注入?
我不知道你说的点击功能是什么意思。
相关文章:
- 如何使用脚本在jsf中执行命令按钮的自动点击
- 在OrientDB javascript函数中执行命令后获得rid
- 节点命令不执行星号路径
- 无法运行安卓.bat文件.xcopy 命令停止执行
- 打印窗口关闭后执行命令
- 如何在javasciipt中添加单引号到字符串,该字符串将在nodeJS中作为mysql插入命令执行
- 在剑道UI中执行默认命令's网格触发事件
- 使用 Node.js 执行命令行二进制文件
- 我可以使用ajax/javascript/jquery执行curl命令吗
- 防油精javascript执行命令
- nodejs'exec'命令不't执行'sed'命令正确
- J.S没有执行所有命令
- 使用JavaScript执行命令行调用
- 拦截内部 HTML 并执行其他命令
- 从任何地方在Windows命令中执行单个Node.js文件
- 如何从 li 执行命令
- 我无法从 PHP 执行 pdf 生成 python 命令
- Javascript命令执行提示符和文档.writeln语句
- 加载HTML和脚本命令执行
- 未选中的上一个错误值: 错误: 没有匹配的窗口 - 我在尝试使用Firefox WebExtension中的命令执行脚本