好的,所以我测试了数据库是否连接好了。但是,我的问题是表单不会进入output.php页面以便能够将其保存到数据库中,我得到了一个 NOT FOUND 错误。我已经包含了错误的屏幕截图,代码似乎对我而言,但我无法弄清楚为什么它不能在文件夹中清楚地找到该页面。感谢您提前的时间。
form.php文件
<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<?php
$fname = $surname = "";
?>
<h2>Fill out user details</h2>
<form action="output.php" method="post" >
First Name: <input id="fname" type="text" name="fname" >
<br><br>
Surname <input id="surname" type="text" name="surname">
<br><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<?php $fname=$_POST["fname"];
$surname=$_POST["surname"];?>
<!--Connect to the database-->
<?php
$conn = new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully"; ?>
<?php
$sql="INSERT INTO 'user'.'user_tbl'('user_fname','user_surname') VALUES ('$fname','$surname')";
mysqli($conn,$sql);
?>
<?php
header("Location: http://localhost/mysite/");
?>
</body>
</html>
答案 0 :(得分:1)
您的代码存在一些问题。
您使用错误的identifiers作为表和列,是单引号。
使用bacticks
$sql="INSERT INTO `user`.`user_tbl`(`user_fname`,`user_surname`) VALUES ('$fname','$surname')";
然后这一行mysqli($conn,$sql);
应该是mysqli_query($conn,$sql);
或
if(!$result = $conn->query($sql)){
die('There was an error running the query [' . $conn->error . ']');
}
然后这个
$conn = new mysqli($servername, $username, $password);
对于数据库应该有第4个参数
$conn = new mysqli($servername, $username, $password, $database);
但是,我看不到为这些中的任何一个设置变量。
以下是http://php.net/manual/en/function.mysqli-connect.php
的示例$link = mysqli_connect("myhost","myuser","mypassw","mybd")
or die("Error " . mysqli_error($link));
或使用您的变量和缺失的变量,并替换为您自己的凭据
$servername = "localhost"; // or what your service provider said to use
$username = "username"; // your username
$password = "password"; // if one is needed. Leave blank if no password is needed
$database = "your_database"; // your database name
$conn = new mysqli($servername, $username, $password, $database);
另外,您目前的代码向SQL injection开放。使用prepared statements或PDO with prepared statements,他们更安全。
如果您使用mysqli_query
而非mysqli
or die(mysqli_error($conn))
至mysqli_query()
然而,你正在进行所谓的&#34;在标题之前输出&#34;使用PHP上方的HTML
标题为
header("Location: http://localhost/mysite/");
您需要将HTML放在PHP下。
实际上,您不需要SQL / PHP的以下标记
<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
和
</body>
</html>