如何将 HTML 表单数据发送到数据库?

How do I send HTML form data to a database?

我正在构建一个包含将数据输入数据库的网页。我已成功连接到我的数据库,并且我的插入查询正在将行添加到数据库中,但表单数据没有传递,因此正在创建行(我在 phpmyadmin 中看到了它们)但是数据为空。

我有两个页面。一种用于显示表单,另一种用于接收表单数据并运行 sql 查询。

这是表单网页的数据

<body>


<form action="insert.php" method=”post”>

Venue:
<input type="text" name = "venue">
<br>
Date:
<input type="text" name = "date">
<br>
Time:
<input type="text" name = "time">
<br>
Postcode:
<input type="text" name = "postcode">
<br>

<input type="submit" Value = "submit" name= "submit">

</form>

这是我用来输入数据的代码。我没有包括数据库的连接代码,因为我对此没有问题。

$venue = $_POST['venue'];
$date = $_POST['date'];
$time = $_POST['time'];
$postcode = $_POST['postcode'];

$query = "INSERT into `event`(`eventVenue`, `eventDate`, `eventTime`,
`EventPostCode`) VALUES (  '$venue', '$date','$time', '$postcode' )";  


mysqli_query($dbconn, $query);

<hr>

</body>

数据库连接:

$host="50.62.209.87"; // Host name 
$username="************"; // Mysql username 
$password="********"; // Mysql password 
$db_name="extras"; // Database name 
// Connect to server and select databse. 
$dbconn = mysqli_connect($host, $username, $password)or die("cannot connect"); 
mysqli_select_db($dbconn, $db_name)or die("cannot select DB"); 

使用我的sqli 或 PDO,您可以阻止 sql 注入,如下所示,希望这对您有用。我使用了 PDO。

$query = "INSERT INTO event (`eventVenue`, `eventDate`, `eventTime`,
`EventPostCode`) VALUES (  ':venue', ':date',':time', ':postcode' )";

$insert = $db -> prepare($query);
$insert -> execute(
 array(
    "venue" => $venue, "date" => $date, "time" => $time, "postcode" => $postcode)
  )
);

你要分步解决问题:

  1. echo $_POST 看看每个值是否都OK

  2. var_dump($query) 看看顶点和引号等是否一切正常...

  3. 试试不带``

首先,使用该IP确保连接。由于它来自 HTML 形式,我建议您使用 strip_tagsisset。看起来它没有用,但它在我的本地服务器上尝试时有效。

$venue = isset($_POST['venue']);
$venue = strip_tags($venue);
$date =  isset($_POST['date']);
$venue = strip_tags($date );
$time =  isset($_POST['time']);
$venue = strip_tags($time );
$postcode =  isset($_POST['postcode']);
$venue = strip_tags($postcode );

就是这样。此外,您还应该考虑预防如何按照建议处理sql注入。

检查方法的双引号 post。用这个代替

method="post"

由于 quotes 作为 "Mark Te" 答案的错误,似乎元素作为默认 form 方法发送 GET。但是,如果您想取消此操作,或者您计划从 GET 接收数据,例如链接参数中的数据,而不是从表单的 POST 方法接收数据。

<a href="insert.php?venue=lorem&date=2015-12-20&time=12">Get Result</a>

最好用$_REQUEST代替$_POST