如何通过文本框在PHP中执行查询

时间:2014-10-07 01:00:07

标签: php html mysql sql database

我想使用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']; 

}

?>

3 个答案:

答案 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 鼓励使用PDOMysqli代替折旧的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'];