如何将 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)
)
);
你要分步解决问题:
echo $_POST
看看每个值是否都OK
var_dump($query)
看看顶点和引号等是否一切正常...
试试不带``
首先,使用该IP确保连接。由于它来自 HTML 形式,我建议您使用 strip_tags
和 isset
。看起来它没有用,但它在我的本地服务器上尝试时有效。
$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
。
我正在构建一个包含将数据输入数据库的网页。我已成功连接到我的数据库,并且我的插入查询正在将行添加到数据库中,但表单数据没有传递,因此正在创建行(我在 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)
)
);
你要分步解决问题:
echo $_POST
看看每个值是否都OKvar_dump($query)
看看顶点和引号等是否一切正常...试试不带``
首先,使用该IP确保连接。由于它来自 HTML 形式,我建议您使用 strip_tags
和 isset
。看起来它没有用,但它在我的本地服务器上尝试时有效。
$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
。