【发布时间】:2021-01-11 16:45:40
【问题描述】:
我想通过 php 使用 get 将用户输入的表单数据发送到 mysql。
<form action="formtosql.php" method="get">
<div class="row">
<div class="form-group col-md-4">
<label for="001">Student name:</label>
<input type="text" class="form-control" id="001" name="sname">
</div>
</div>
<div class="row">
<div class="form-group col-md-4">
<label for="002">Status:</label>
<input type="text" class="form-control" id="002" name="sstatus">
</div>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
php 代码如下:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'GET'){
$name = $_GET['sname'];
$stat = $_GET['sstatus'];
// Connecting to the Database
$servername = "localhost";
$username = "root";
$password = "";
$database = "exam";
// Create a connection
$conn = mysqli_connect($servername, $username, $password, $database);
// Die if connection was not successful
if (!$conn){
die("Sorry we failed to connect: ". mysqli_connect_error());
}
else{
$sql = "INSERT INTO `estatus` (`name`, `status`, `date`) VALUES ('$name', '$stat', current_timestamp())";
$result = mysqli_query($conn, $sql);
?>
在 php 中使用 get 时出现错误:
注意:未定义索引:C:\xampp\htdocs\helloworld\formtosql.php 中的 sname
注意:未定义索引:C:\xampp\htdocs\helloworld\formtosql.php 中的 sstatus
如果我使用 Post,则不会出现此错误。
【问题讨论】:
-
如果您将数据插入到表中,您应该使用“POST”,而不是“GET”,因为您“发布”到数据库,而不是“获取”数据库。既然这对您有用,为什么要尝试切换到“GET”?您还需要查看准备好的语句,而不仅仅是将字符串连接到查询中。此外,如果日期始终是当前时间戳,请在表定义中将其设置为默认值,并将其完全排除在查询之外。
-
我见过很少的帖子使用 GET() 来发送或打印数据。所以这有点令人困惑,因为我只是一个初学者:(
-
我不明白为什么要使用 GET 方法而不是 POST,因为 POST 方法比 GET 更安全地向服务器发送数据。
-
我只是想知道使用 GET 时出现此错误的原因
-
警告:您对SQL Injections 持开放态度,应该使用参数化的prepared statements,而不是手动构建查询。它们由PDO 或MySQLi 提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行,you are still in risk of corrupting your data。 Escaping is not enough!