我正在尝试制作一个简单的联系表单并将数据插入数据库。我知道有很多与此非常相似的问题,但我只是无法找出我的代码出了什么问题。
当我填写所有表单字段并尝试提交时,我总是得到 !mysqli_query($con, $sql) == FALSE
。换句话说,我无法将任何数据插入数据库。
<?php
if(isset($_GET['send'])){
$name= $_GET['name'];
$email= $_GET['email'];
$phone = $_GET['phone'];
$message = $_GET['message'];
if(isset($name) && isset($email) && isset($phone) && isset($message) && !empty($name) && !empty($email) && !empty($phone) && !empty($message)){
echo '<div class="alert alert-success" role="alert"><p class="alert">Your message was sent successfully.</p></div>';
$con = mysqli_connect('localhost', 'root', '') or die('Cannot connect to database.');
if(!mysqli_select_db($con, 'users')){
echo 'Database is not choosen.';
}
$sql = "INSERT INTO person(Name, Email, Phone, Message) VALUES ('$name', '$email', '$phone', '$message')";
if(!mysqli_query($con, $sql)){
echo "Data is not inserted.";
}
}
else{
echo '<div class="alert alert-danger" role="alert"><p class="alert">Some fields are empty.</p></div>';
}
}
?>
<form action = "contact.php" method="get">
<div class="form-group">
<input type="text" class="form-control" placeholder="Name" name="name">
</div>
<div class="form-group">
<input type="email" class="form-control" placeholder="Email" name="email">
</div>
<div class="form-group">
<input type="number_format" class="form-control" placeholder="Phone" name="phone">
</div>
<div class="form-group">
<textarea class="form-control" rows="8" placeholder="Message" name="message"></textarea>
</div>
<div class="form-group">
<button class = "btn btn-primary" style="width: 100%; height: 70px" type="submit" name="send"><span class="glyphicon glyphicon-send"></span></button>
</div>
</form>
最佳答案
注意:作为社区 wiki 发布。不是因为我对答案没有信心,而是因为我已经投票决定结束这个问题,当然是诚实的;-)
type="number_format"
是无效类型。
如果 HTML5 可供您使用并且确实是一个整数,则可以使用 type="number"
,或者使用 type="text"
以使其跨域兼容浏览器。无论哪种方式,您的 MySQL 都会处理它。
这就是您的代码在这里失败的原因。
有关有效输入类型的信息,请参阅以下内容:
另外,作为奖励:
您当前的代码已开放给 SQL injection 。使用prepared statements ,或PDO与 prepared statements .
<小时/>请参阅以下链接 http://php.net/manual/en/mysqli.error.php和 http://php.net/manual/en/function.error-reporting.php 并将其应用到您的代码中。
您还应该检查空字段,而不是使用 isset()
:
否则,您可能会遇到错误/问题; 如果您正在检查/寻找它们。
关于php - 将表单数据插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36989527/