执行 Mysqli 查询时出现错误 500
Error 500 when performing Mysqli Queries
我一直在使用 PHP 开发一个微型表单获取并插入到 MySQL 数据库系统。我之前已经在本地 WAMP 服务器上使用过这种类型的代码,现在我正尝试在我的主机上真正做到这一点,但是我不断收到 500 Error Internal Server error with the following code.
HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="Main_Stylesheet.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<title>Contact</title>
</head>
<body>
<nav class="navbar navbar-default" id="Body_Nav" style="margin-bottom: none;">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="index.php">Filosofie in Amsterdam</a>
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#myNavbar">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="collapse navbar-collapse" id="myNavbar" >
<ul class="nav navbar-nav">
<li><a href="index.php">Home</a></li>
<li><a href="bestel.php">Bestel</a></li>
<li><a href="preview.php">Preview</a></li>
<li class="active"><a href="contact.php">Contact</a></li>
<li><a href="us.php">Over Ons</a></li>
<li><a href="donate.php">Doneren</a></li>
</ul>
</div>
</div>
</nav>
<div class="container-fluid" id="Contact_Main_Header">
<div class="row">
<div class="col-lg-12">
<h1 class="text-center" id="Contact_Main_Header_H1">Contact</h1>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-lg-6">
<h2 class="text-center">Informatie</h2>
</div>
<div class="col-lg-6">
<h2 class="text-center">Nieuwsbrief</h2>
<p class="text-justify">Op de hoogte zijn van voortgang of het laatste nieuws? Geef je dan op via de nieuwsbrief hieronder:</p>
<form method="post" action="formvalid.php">
<div class="form-group">
<label for="Contact_Form_Email">Email Adres:</label>
<input type="email" name="Contact_Form_Email" class="form-control" id="Contact_Form_Email" placeholder="Plaats hier je email adres" required>
</div>
<div class="form-group">
<label for="Contact_Form_First_Name">Voornaam:</label>
<input type="text" name="Contact_Form_First_Name" class="form-control" id="Contact_Form_First_Name" placeholder="Plaats hier je voornaam" required>
</div>
<div class="form-group">
<label for="Contact_Form_Last_Name">Achternaam:</label>
<input type="text" name="Contact_Form_Last_Name" class="form-control" id="Contact_Form_Last_Name" placeholder="Plaats hier je voornaam" required>
</div>
<button type="submit" class="btn btn-default">Verzenden</button>
</form>
</div>
</div>
</div>
</body>
</html>
和PHP:
<?php
$Server = "localhost";
$Username = "filoso1q_admin";
$PW = "Foxtrot15";
$DB = "filoso1q_nieuwsbrief";
$connection = mysqli_connect($Server, $Username, $PW, $DB);
if($connection = false) {
die("Error: " . mysqli_error_connect());
}
$Email = $_POST("Contact_Form_Email");
$First_Name = $_POST("Contact_Form_First_Name");
$Last_Name = $_POST("Contact_Form_Last_Name");
$sql = "INSERT INTO `Users` ('User_ID', 'Email', 'First_Name', 'Last_Name') VALUES (NULL, '$Email', '$First_Name', '$Last_Name');";
mysqli_query($sql);
mysqli_close($connection);
?>
我很确定其中一些应该有效,但出于某种原因我只能在 PHPmyadmin 本身中查询 运行。我的主机使用 Cpanel webadmin 作为网络服务器。
我改变了主意,最终决定post一个答案。
您正在为 if($connection = false)
分配一个等号,而不是与两个 if($connection == false)
进行比较。
- http://php.net/manual/en/language.operators.assignment.php
- http://php.net/manual/en/language.operators.comparison.php
或者,查阅 mysqli_connect()
上的手册以获得更多选项:
您对查询中的列使用了不正确的标识符限定符。它们应该是刻度而不是常规引号。
关于刻度的旁注:你甚至不需要这些,因为你没有使用任何 MySQL's reserved words,它们也不包含空格或连字符,或者MySQL 会抱怨的任何其他字符,因此您可以安全地删除列名的那些字符。
那么您为 POST 数组使用了错误类型的括号。您使用 (...)
而不是正方形 [...]
.
您也没有将连接传递给您的查询,这需要作为第一个参数。
重写查询错误检查:
<?php
$Server = "localhost";
$Username = "filoso1q_admin";
$PW = "Foxtrot15";
$DB = "filoso1q_nieuwsbrief";
$connection = mysqli_connect($Server, $Username, $PW, $DB);
if($connection == false) {
die("Error: " . mysqli_error_connect());
}
$Email = $_POST["Contact_Form_Email"];
$First_Name = $_POST["Contact_Form_First_Name"];
$Last_Name = $_POST["Contact_Form_Last_Name"];
$sql = "INSERT INTO `Users` (`User_ID`, `Email`, `First_Name`, `Last_Name`) VALUES (NULL, '$Email', '$First_Name', '$Last_Name');";
mysqli_query($connection, $sql) or die(mysqli_error($connection));
mysqli_close($connection);
?>
将 error reporting 添加到文件顶部,这将有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Then the rest of your code
旁注:显示错误只应在试运行中进行,绝不能在生产中进行。
和 or die(mysqli_error($con))
到 mysqli_query()
用于调试。
还要确保您为列选择了正确的类型,并且它们的长度足以容纳数据。
此外,请确保您的 User_ID
列确实接受 NULL 值并且不是 AUTO_INCREMENT。否则,使用 NULL 将失败。
您需要将查询更改为 VALUES ('', '$Email', ...
您当前的密码对SQL injection. Use mysqli_*
with prepared statements, or PDO with prepared statements开放。
500 错误是服务器错误,可以在您的日志中查看。检查这些,或使用上面概述的错误报告以便在屏幕上查看。
我一直在使用 PHP 开发一个微型表单获取并插入到 MySQL 数据库系统。我之前已经在本地 WAMP 服务器上使用过这种类型的代码,现在我正尝试在我的主机上真正做到这一点,但是我不断收到 500 Error Internal Server error with the following code.
HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="Main_Stylesheet.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<title>Contact</title>
</head>
<body>
<nav class="navbar navbar-default" id="Body_Nav" style="margin-bottom: none;">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="index.php">Filosofie in Amsterdam</a>
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#myNavbar">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="collapse navbar-collapse" id="myNavbar" >
<ul class="nav navbar-nav">
<li><a href="index.php">Home</a></li>
<li><a href="bestel.php">Bestel</a></li>
<li><a href="preview.php">Preview</a></li>
<li class="active"><a href="contact.php">Contact</a></li>
<li><a href="us.php">Over Ons</a></li>
<li><a href="donate.php">Doneren</a></li>
</ul>
</div>
</div>
</nav>
<div class="container-fluid" id="Contact_Main_Header">
<div class="row">
<div class="col-lg-12">
<h1 class="text-center" id="Contact_Main_Header_H1">Contact</h1>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-lg-6">
<h2 class="text-center">Informatie</h2>
</div>
<div class="col-lg-6">
<h2 class="text-center">Nieuwsbrief</h2>
<p class="text-justify">Op de hoogte zijn van voortgang of het laatste nieuws? Geef je dan op via de nieuwsbrief hieronder:</p>
<form method="post" action="formvalid.php">
<div class="form-group">
<label for="Contact_Form_Email">Email Adres:</label>
<input type="email" name="Contact_Form_Email" class="form-control" id="Contact_Form_Email" placeholder="Plaats hier je email adres" required>
</div>
<div class="form-group">
<label for="Contact_Form_First_Name">Voornaam:</label>
<input type="text" name="Contact_Form_First_Name" class="form-control" id="Contact_Form_First_Name" placeholder="Plaats hier je voornaam" required>
</div>
<div class="form-group">
<label for="Contact_Form_Last_Name">Achternaam:</label>
<input type="text" name="Contact_Form_Last_Name" class="form-control" id="Contact_Form_Last_Name" placeholder="Plaats hier je voornaam" required>
</div>
<button type="submit" class="btn btn-default">Verzenden</button>
</form>
</div>
</div>
</div>
</body>
</html>
和PHP:
<?php
$Server = "localhost";
$Username = "filoso1q_admin";
$PW = "Foxtrot15";
$DB = "filoso1q_nieuwsbrief";
$connection = mysqli_connect($Server, $Username, $PW, $DB);
if($connection = false) {
die("Error: " . mysqli_error_connect());
}
$Email = $_POST("Contact_Form_Email");
$First_Name = $_POST("Contact_Form_First_Name");
$Last_Name = $_POST("Contact_Form_Last_Name");
$sql = "INSERT INTO `Users` ('User_ID', 'Email', 'First_Name', 'Last_Name') VALUES (NULL, '$Email', '$First_Name', '$Last_Name');";
mysqli_query($sql);
mysqli_close($connection);
?>
我很确定其中一些应该有效,但出于某种原因我只能在 PHPmyadmin 本身中查询 运行。我的主机使用 Cpanel webadmin 作为网络服务器。
我改变了主意,最终决定post一个答案。
您正在为 if($connection = false)
分配一个等号,而不是与两个 if($connection == false)
进行比较。
- http://php.net/manual/en/language.operators.assignment.php
- http://php.net/manual/en/language.operators.comparison.php
或者,查阅 mysqli_connect()
上的手册以获得更多选项:
您对查询中的列使用了不正确的标识符限定符。它们应该是刻度而不是常规引号。
关于刻度的旁注:你甚至不需要这些,因为你没有使用任何 MySQL's reserved words,它们也不包含空格或连字符,或者MySQL 会抱怨的任何其他字符,因此您可以安全地删除列名的那些字符。
那么您为 POST 数组使用了错误类型的括号。您使用 (...)
而不是正方形 [...]
.
您也没有将连接传递给您的查询,这需要作为第一个参数。
重写查询错误检查:
<?php
$Server = "localhost";
$Username = "filoso1q_admin";
$PW = "Foxtrot15";
$DB = "filoso1q_nieuwsbrief";
$connection = mysqli_connect($Server, $Username, $PW, $DB);
if($connection == false) {
die("Error: " . mysqli_error_connect());
}
$Email = $_POST["Contact_Form_Email"];
$First_Name = $_POST["Contact_Form_First_Name"];
$Last_Name = $_POST["Contact_Form_Last_Name"];
$sql = "INSERT INTO `Users` (`User_ID`, `Email`, `First_Name`, `Last_Name`) VALUES (NULL, '$Email', '$First_Name', '$Last_Name');";
mysqli_query($connection, $sql) or die(mysqli_error($connection));
mysqli_close($connection);
?>
将 error reporting 添加到文件顶部,这将有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Then the rest of your code
旁注:显示错误只应在试运行中进行,绝不能在生产中进行。
和 or die(mysqli_error($con))
到 mysqli_query()
用于调试。
还要确保您为列选择了正确的类型,并且它们的长度足以容纳数据。
此外,请确保您的 User_ID
列确实接受 NULL 值并且不是 AUTO_INCREMENT。否则,使用 NULL 将失败。
您需要将查询更改为 VALUES ('', '$Email', ...
您当前的密码对SQL injection. Use mysqli_*
with prepared statements, or PDO with prepared statements开放。
500 错误是服务器错误,可以在您的日志中查看。检查这些,或使用上面概述的错误报告以便在屏幕上查看。