【发布时间】:2015-10-31 17:44:26
【问题描述】:
我一定忽略了一些非常明显的东西,但是我已经检查了我所有的 PHP 代码,并将其与其他有效的形式进行了比较。我找不到任何差异。基本上,当我提交此表单时,它不会在我的数据库中的 cmets 表中添加任何内容。一定有一些非常明显的东西我忽略了。你能帮我弄清楚我错过了什么吗?这是我的php表单:
<?php
session_start();
require_once('functions/functions.php');
echo do_html(array('title'=>'Comments', 'css_file'=>'assets/css/style.css'));
echo do_header();
?>
<div id="usernameDiv"><?php echo do_greetings(); ?></div>
<div>
<p class="lead">We are always looking for new feedback, whether you have registered or not! Please leave your name and email address. Thank you!</p>
</div>
<form action="actions/comments.php" method="post">
First Name:<br>
<input type="text" name="fname">
<br>
Last Name:<br>
<input type="text" name="lname">
<br>
Email Address:<br>
<input type="text" name="eaddress"> <br><br>
<textarea name="ucomment" cols="50" rows="7" placeholder="Enter comments here..."></textarea>
<br><br>
<input type="submit" name="submitButton" value="Submit" >
</form>
<?php echo do_footer(); ?>
然后,这里是处理它到表单的php文件。
<?php
require_once("constants.php");
$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
mysqli_set_charset($link, 'utf8');
if (!$link) {
die("Database connection failed: " . mysqli_error($link));
}
if (isset($_POST['fname'])) {
$post_vars = array('fname', 'lname', 'eaddress', 'ucomment');
foreach($post_vars as $key) {
$$key = mysqli_real_escape_string($link, $_POST[$key]);
}
$sql = "INSERT INTO comments (fname, lname, eaddress, ucomment) VALUES ('$fname', '$lname', '$eaddress', '$ucomment');";
$result = mysqli_query($link, $sql);
}
mysqli_close($link);
?>
另外,这是我的常量文件,但我怀疑它在这里,因为我的其他表单都可以正常发布:
<?php
//This is constants.php file
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASSWORD', 'password');
define('DB_NAME', 'conference');
?>
【问题讨论】:
-
有什么错误吗?当您使用 mysqli 时,请使用准备好的查询!
-
是否进入
if?生成的查询是什么样的? -
在调用 mysqli_query 之前打印查询“$sql”变量
-
$result = mysqli_query($link, $sql) or die(mysqli_error($link)); -
您也可以尝试去掉
'$ucomment');中的分号 foreach 中跨度>