php 表单未提交

The php form not getting submitted

我正在尝试使用 xampp 服务器上的 php 将此表单数据提交到另一个数据库。一旦我点击提交,它就会显示等待本地主机,甚至不会将条目保存在数据库中。我在 xampp 中进行了更改以侦听端口 8080.I,这对 php 来说还很陌生。提前致谢!

这是我的html

<!DOCTYPE html>
<html>
<body>

<form action="submit.php" method=post">
 First name:<br>
<input type="text" name="firstname" >
<br>
 Last name:<br>
<input type="text" name="lastname" >
<br><br>
<input type="submit" value="submit">
</form>
</body>
</html> 

这是我的 php 代码

<?php
$x=$_POST['firstname'];
$y=$_POST['lastname'];
$servername= 'localhost';
$username = 'root';
$password = '';
$dbname = 'db1';
$port = 8080;

//$mysqli = new mysqli("localhost", "username", "password", "dbname");

$conn = new mysqli($servername, $username, $password, $dbname, $port);

echo "Connection successful!" . "<bc>";
$sql = "INSERT INTO user (fname, lname) VALUES ('$x', '$y')";

if($conn->query($sql) === TRUE){
 echo "New record created successfully";
} else {
 echo "<bc> Error: " .  $sql . "<br>" . $conn->error;
}

$conn->close();
?> 

我似乎也遇到了以下错误: 注意:未定义索引:F:\Xampp\htdocs\Project\submit.php第3行第一个

注意:未定义索引:最后在 F:\Xampp\htdocs\Project\submit.php 第 4 行

警告:mysqli::__construct():MySQL 服务器已在 F:\Xampp\htdocs\Project\submit.php 第 13 行

中消失

警告:mysqli::__construct():读取问候包时出错。 F:\Xampp\htdocs\Project\submit.php 第 13

行中的 PID=4572

警告:mysqli::__construct(): (HY000/2006): MySQL 服务器已在第 13 行的 F:\Xampp\htdocs\Project\submit.php 中消失

致命错误:第 13 行 F:\Xampp\htdocs\Project\submit.php 中超过 120 秒的最大执行时间

确保使用正确的 MySQL 端口 (默认为 3306)并且 user table存在(下面的示例也确保了这一点),最后将 HTML 部分 method=post" 更改为 method="post"(缺少双引号)。

试试下面的方法:

<?php
$x=$_POST['firstname'];
$y=$_POST['lastname'];
$servername= 'localhost';
$username = 'root';
$password = '';
$dbname = 'db1';
$port = 3306;

$conn = new mysqli($servername, $username, $password, $dbname, $port);
echo "Connection successful!" . "<bc>";

// Ensures table exists:
$conn->query('CREATE TABLE IF NOT EXISTS `user` (fname VARCHAR(40) NOT NULL, lname VARCHAR(20) NOT NULL);');

$sql = "INSERT INTO user (fname, lname) VALUES ('$x', '$y')";
if($conn->query($sql) === TRUE){
 echo "New record created successfully";
} else {
 echo "<bc> Error: " .  $sql . "<br>" . $conn->error;
}

$conn->close();
?>

无论如何,我建议您使用 PHP 的 PDO 和准备好的查询(以防止 SQL 注入攻击),这会将您的代码变成:

<?php
$x=$_POST['firstname'];
$y=$_POST['lastname'];
$servername= 'localhost';
$username = 'root';
$password = '';
$dbname = 'db1';
//$port = 3306;

try {
 $pdo = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
 echo "Connection successful!" . "<bc>";

 // Ensures table exists:
 $pdo->query('CREATE TABLE IF NOT EXISTS `user` (fname VARCHAR(40) NOT NULL, lname VARCHAR(20) NOT NULL);');

 // prepare the statement and/or command
 $sql = 'INSERT INTO user (fname, lname) VALUES (:x, :y)';
 $statement = $pdo->prepare($sql);
 // pass value to the command
 $statement->bindParam(':x', $x, PDO::PARAM_STR);
 $statement->bindParam(':y', $y, PDO::PARAM_STR);
 // execute the prepared statement
 if($statement->execute() === TRUE){
  echo "New record created successfully";
 } else {
  echo "<bc> Error: " .  $sql . "<br>" . join(' ', $statement->errorInfo());
 }

 $statement->closeCursor();
} catch (PDOException $e) {
 die("Error occurred:" . $e->getMessage());
}

?>