【发布时间】:2018-07-08 11:20:26
【问题描述】:
我的数据库连接有问题。 每当我尝试连接时,它都会死掉并显示我写的这条消息 “查询失败”。 我正在尝试制作一个联系表格以将数据发送到我的数据库,我的数据库的名称是“联系人”。 我的表的名称是“contact_table”。
我不知道该怎么办,请帮帮我。 这些是我的代码:
<div class="contact">
<form action="contact_us.php" method="POST">
<label class="label-name">Name: </label>
<input class="input-name" name="name" type="text">
<label class="label-lname">Last Name: </label>
<input class="input-lname" name="lastname" type="text">
<label class="label-email">Email: </label>
<input class="input-email" name="email" type="email">
<label class="label-message">Message: </label>
<textarea class="input-message" name="message" type="text"></textarea>
<a href="#"><input class="submit-btn" name="submit" type="submit" value="Submit"></a>
</form>
</div>
if(isset($_POST['submit'])){
global $connection;
$name = $_POST['name'];
$lname = $_POST['lastname'];
$email = $_POST['email'];
$message = $_POST['message'];
$name = mysqli_real_escape_string($connection, $name );
$lname = mysqli_real_escape_string($connection, $lname );
$email = mysqli_real_escape_string($connection, $email );
$message = mysqli_real_escape_string($connection, $message );
$query = "INSERT INTO contact_table('name', 'lastname', 'email', 'message') ";
$query .= "VALUES ('name', 'lastname', 'email', 'message')";
$result = mysqli_query($connection, $query);
if(!$result){
die('Query FAILED');
} else {
echo "Record Created";
}
}
这是我的数据库连接
$server = "localhost";
$username = "root";
$password = "";
$dbname = "contact";
$connection = mysqli_connect($server , $username, $password, $dbname);
if(!$connection){
die("Database connection failed". mysqli_error());
}
【问题讨论】:
-
您需要在值前加上 $,例如 $name。
-
您对SQL injection 敞开心扉。您需要使用准备好的语句,而不是将变量连接到查询中。转义值是不够的。见How can I prevent SQL injection in PHP?。
-
只要你的数据库设置和使用正确,转义就足够了......不是edge case。然而,使用准备好的语句更容易,压力也更小。
标签: php html database forms database-connection