PHP未发布到MYSQL
我一定忽略了一些非常明显的东西,但我已经浏览了所有的PHP代码,并将其与其他正在工作的表单进行了比较。我找不到任何区别。基本上,当我提交此表单时,它不会向数据库中的comments表添加任何内容。我一定忽略了一些非常明显的事情。你能帮我找出我遗漏了什么吗?以下是我的php表单:PHP未发布到MYSQL,php,mysql,database,forms,Php,Mysql,Database,Forms,我一定忽略了一些非常明显的东西,但我已经浏览了所有的PHP代码,并将其与其他正在工作的表单进行了比较。我找不到任何区别。基本上,当我提交此表单时,它不会向数据库中的comments表添加任何内容。我一定忽略了一些非常明显的事情。你能帮我找出我遗漏了什么吗?以下是我的php表单: <?php session_start(); require_once('functions/functions.php'); echo do_html(array('title'=>'Comments',
<?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
if ( !isset($_POST['fname']) ) {
echo '...';
}
else {
require_once "constants.php";
$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if ($link->connect_errno) {
trigger_error( sprintf('mysqli connect error (%d) %s', $link->connect_errno, $link->connect_error), E_USER_ERROR);
die;
}
else if ( !mysqli_set_charset($link, 'utf8') ) {
trigger_error('Error loading character set utf8: '. $link->error, E_USER_ERROR);
}
else {
$post_vars = array('fname', 'lname', 'eaddress', 'ucomment');
foreach($post_vars as $key) {
if ( !isset($_POST[$key]) ) {
trigger_error('missing POST parameter '.$key, E_USER_ERROR);
// ....and some bailout code here
}
$$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);
if ( !$result ) {
trigger_error('query failed. '. $link->error, E_USER_ERROR);
}
else {
echo $link->affected_rows, ' record(s) inserted';
}
}
mysqli_close($link);
}
有什么错误吗?使用mysqli时,请使用准备好的查询!如果输入,是否输入?生成的查询是什么样子的?在调用mysqli_query($link,$sql)或die(mysqli_error($link))之前,打印查询“$sql”变量
您还可以尝试去掉“$ucomment”中的分号代码>查看上面OP的评论。他们说删除的答案解决了这个问题。如何/为什么,我不知道。我承认我不在乎(几小时前刚刚决定;-)这一切都是关于泛滥的,因此php/pdo/mysql答案在错误处理和sql注入方面并不完全糟糕-D(否则这将是另一个“这到底是怎么解决问题的”时刻)
<?php
if ( !isset($_POST['fname']) ) {
echo '...';
}
else {
require_once "constants.php";
$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if ($link->connect_errno) {
trigger_error( sprintf('mysqli connect error (%d) %s', $link->connect_errno, $link->connect_error), E_USER_ERROR);
die;
}
else if ( !mysqli_set_charset($link, 'utf8') ) {
trigger_error('Error loading character set utf8: '. $link->error, E_USER_ERROR);
}
else {
$post_vars = array('fname', 'lname', 'eaddress', 'ucomment');
foreach($post_vars as $key) {
if ( !isset($_POST[$key]) ) {
trigger_error('missing POST parameter '.$key, E_USER_ERROR);
// ....and some bailout code here
}
$$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);
if ( !$result ) {
trigger_error('query failed. '. $link->error, E_USER_ERROR);
}
else {
echo $link->affected_rows, ' record(s) inserted';
}
}
mysqli_close($link);
}