我想使用PHP通过HTML中的文本框区域执行查询。我知道这很容易被SQL注入,但我并不担心。以下是我当前代码的一部分..
SQL输出:
<?php
mysql_connect($host, $username, $password)or die("cannot connect");
mysql_select_db($db_name)or die("cannot select DB");
$query = "SELECT * FROM members"; // **I want to pass the query from a textbox value **
$result = mysql_query($query);
while($row = mysql_fetch_array($result)) {
echo $row['username'] . $row['password'];
}
?>
答案 0 :(得分:2)
我不会宽恕任何允许SQL注入的问题。 这就是你如何将值从文本字段传递到php脚本,允许你在查询中使用它。
您需要设置表单。
<form action="process.php" method="POST">
<input type="text" name="the-field">
<input type="submit" name="submit" value="Submit">
</form>
在你的php脚本(process.php
)中,你会有这样的事情:
if(isset($_POST['submit'])) {
$field = $_POST['the-field']; // obviously you'd sanitize it here.
// run the query using PDO/Mysqli, etc...
}
我 HIGHLY 鼓励使用PDO
或Mysqli
代替折旧的mysql_*
功能。
以下是您可以遵循的一些示例:
以下是PDO查询的示例。
<?php
$db = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$stmt = $db->prepare("SELECT * FROM table WHERE id=? AND name=?");
$stmt->execute(array($id, $name));
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
(Source)功能
答案 1 :(得分:1)
您已将文本框命名为SQL
而非message
。
<?php
if ( isset($_GET["SQL"]) ) {
$sql = $_GET["SQL"];
$result = mysql_query($sql);
if($result) {
//show output
} else {
//error
}
}
?>
正如您已经指出的那样,这很容易被SQL注入,并且非常不鼓励。
答案 2 :(得分:0)
替换它 - $ query =“SELECT * FROM members”;
这个--- $ query = $ _REQUEST ['SQL'];