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

时间:2015-02-08 16:49:53

标签: php mysql mysqli

我正在构建一个包含将数据输入数据库的网页。我成功连接到我的数据库,我的插入查询正在向数据库中添加行,但表单数据没有通过,因此正在创建行(我已在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>

Db连接:

$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"); 

5 个答案:

答案 0 :(得分:6)

检查方法帖子的双引号。请改用

method="post"

答案 1 :(得分:1)

你必须分步解决问题:

  1. echo $_POST并查看每个值是否正常

  2. var_dump($query)并查看是否所有内容都适用于顶点和引号......

  3. 尝试没有``

答案 2 :(得分:0)

使用mysqli或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)
  )
);

答案 3 :(得分:0)

首先,使用该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注入的预防。

答案 4 :(得分:0)

由于form中的错误作为“Mark Te”答案,因此似乎将元素作为默认GET方法quotes发送。但是,如果您要取消此操作,或者您计划从GET接收数据,例如链接参数中的数据,只需从表单的POST方法中重新获取数据。

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

最好使用$_REQUEST代替$_POST