我一直试图让这个工作几个小时。我在这里研究了很多线程,试图看看我是否能找到我的代码问题。我是PHP的新手,我不断收到内部服务器错误,但我似乎无法追踪它。我已经尝试过网上建议的各种方法,但没有运气。它是HTML中的一个基本用户注册表单,在一个PHP文件中。(我打算在同一个文件上同时执行html和php但无法使其工作)这个想法是让表单提交给我的MYSQL数据库客户表。如果你们中的任何一个人能够阐明我做错了什么或者指出了我正确的方向,那将非常感激。提前致谢。
HTML
<form id="signupField" action="register.php" method="post">
First Name:<br>
<input type="text" name="FN" size="auto"/><br>
Last Name:<br>
<input type="text" name="LN" size="auto"/><br>
Street Address:<br>
<input type="text" name="SA" size="auto"/><br>
City:<br>
<input type="text" name="City" size="auto"/><br>
State:<br>
<input type="text" name="ST" size="auto"/><br>
Zip:<br>
<input type="text" name="Zip" size="auto"/><br>
Email Address:<br>
<input type="text" name="Email" size="auto"/><br>
Password:<br>
<input type="text" name="Password" size="auto"/><br>
<input type="submit" value="submit" name="submit"/>
</form>
引用PHP:
<?php
$hostname = "localhost";
$username = "serviceaccount";
$password = "password";
$dbname = "nameofdb";
$conn = new mysqli($hostname,$username,$password,$dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
<?php
$FName=$_POST["FN"];
$LName=$_POST["LN"];
$SA=$_POST["SA"];
$City=$_POST["City"];
$State=$_POST["ST"];
$Zip=$_POST["Zip"];
$Email=$_POST["Email"];
$Password=$_POST["Password"];
if (isset($_POST["submit"])) {
$sql = "INSERT INTO Customers(FName,LName,StreetAddress,City,State,Zip,Email,Password) VALUES('$_POST["FN"]','$_POST["LN"]','$_POST["SA"]','$_POST["City"]','$_POST["ST"]','$_POST["Zip"]','$_POST["Email"]','$_POST["Password"]')";
if ($conn->query($sql) === TRUE) {
echo "<script type= 'text/javascript'>alert('New record created successfully');</script>";
} else {
echo "<script type= 'text/javascript'>alert('Error: " . $sql . "<br>" . $conn->error."');</script>";
}
$conn->close();
}
}
?>
编辑找到此错误后:连接失败:未知MySQL服务器主机'localhost:3306'(0)我能够解决数据库的连接问题。现在,当我把剩下的PHP放回去时,我仍然得到500错误。它肯定会缩小问题所在的位置!
编辑我想感谢大家的帮助。主要问题是SQL连接。在我得到照顾之后,我发现我有一个额外的支架,这是我收到的另一个内部错误的原因。
答案 0 :(得分:0)
用以下内容替换您的register.php代码。
<?php
$hostname = "localhost";
$username = "serviceaccount";
$password = "password";
$dbname = "nameofdb";
$conn = new mysqli($hostname,$username,$password,$dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
如果打印出该连接失败;那么你必须检查你的代码连接到数据库。
答案 1 :(得分:0)
对所有发布变量使用isset($ _ POST [“FN”]).. etc并尝试在插入查询中使用变量$ FName,$ LName等而不是直接$ _POST变量。 e.g。
ItemsSource
同时检查连接是打开还是失败。
答案 2 :(得分:0)
在将任何新字段插入数据库之前使用
mysql_real_escape_string
在将这些参数插入db
之前检查空参数使用以下内容为MySQLi打开所有错误报告
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
答案 3 :(得分:0)
首先,“基本检查”问题:带有表单和register.php的html都在同一目录下,对吧?不包括,要求等
如果您有权访问apache error_log,请先检查它以查看您收到的错误消息。如果您无法理解,请在此处发帖以帮助您。
如果你没有对文件进行处理,首先我们需要找到你弄错的地方。作为一个想法,从register.php开始......
<?php
$hostname = "localhost";
$username = "serviceaccount";
$password = "password";
$dbname = "nameofdb";
$conn = new mysqli($hostname,$username,$password,$dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
直接到http://[yourdirectory]/register.php,看看你得到了什么。然后开始逐步添加其余部分,并在出现错误时通知我们。
其他认为检查是数据库NULL变量配置。所有列都允许空值?您是填写所有表单字段还是将任何字段留空?
答案 4 :(得分:0)
您应该使用为帖子字段而不是$ _POST对象分配的变量,并确保清理所有用户输入。
您可以尝试使用以下内容替换$ sql-string:
$sql = "INSERT INTO Customers(FName,LName,StreetAddress,City,State,Zip,Email,Password) VALUES('$FName','$LName','$SA','$City','$State','$Zip','$Email','$Password')";