PHP表单不保存信息到mySQL数据库错误

时间:2014-11-07 23:40:43

标签: php mysql wordpress

好的,所以我测试了数据库是否连接好了。但是,我的问题是表单不会进入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>

output.php文件

<!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>

Error

1 个答案:

答案 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 statementsPDO 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>
  • 只是PHP / SQL。