我正在尝试使我的表单验证和数据库插入脚本正常工作,但再次遇到问题。我正在使用 elseif 语句来执行以下操作:
检查表单是否确实是由用户单击提交按钮提交的,并且所有数据字段均已填写,如果没有,则发出警告并重定向回表单页面(这是似乎唯一有效的部分)
如果表单已完全填写并单击提交按钮,则连接到 mysql 服务器并选择 db 或 die 并显示错误消息
如果有到数据库的连接,则将表单数据插入到表中
我可以阻止输入空字段,但仅此而已,其他一切似乎都会中断。我似乎不明白为什么。 tail -f/var/log/apache2/error.log
不显示任何内容。也许我的事情过于复杂了。我一直使用这个网站作为引用和http://www.w3schools.com/php/php_if_else.asp对于 elseif 语法,新手仍然搞砸了。
这是代码:
<?php
//Form fields passed to variables
$manu = mysql_real_escape_string($_POST['inputManu']);
$model = mysql_real_escape_string($_POST['inputModel']);
$desc = mysql_real_escape_string($_POST['inputDesc']);
//Connect to database using $conn
include ('connection.php');
//Insert record into table
$sql = "INSERT INTO gear (`id`,`manu`,`model`,`desc`)
VALUES (NULL,'$manu','$model','$desc')";
//Check for empty fields
if ($_POST['submit'])
{
foreach($_POST as $val)
{
if(trim($val) == '' || empty($val))
{
die();
echo "Please complete all form fields!";
echo "<meta http-equiv='Refresh' content='3; URL=../add.php'>";
//header("Location: ../add.php?error=empty_fields");
}
}
}
elseif (!mysqli_query($conn,$sql))
{
die('Error: ' . mysqli_error($conn));
}
else
{
//echo "1 record added";
echo "Success, You added the ".$manu." ".$model."";
echo "<meta http-equiv='Refresh' content='3; URL=../index.php'>";
}
mysqli_close($conn);
?>
最佳答案
这是有效的代码,但我确信还可以进行一些改进:
<?php
//Connect to database using $conn
include ('connection.php');
//Form fields passed to variables
$manu = mysqli_real_escape_string($conn, $_POST['inputManu']);
$model = mysqli_real_escape_string($conn, $_POST['inputModel']);
$desc = mysqli_real_escape_string($conn, $_POST['inputDesc']);
//Insert record into table
$sql = "INSERT INTO gear (`id`,`manu`,`model`,`desc`)
VALUES (NULL,'$manu','$model','$desc')";
//Check for empty fields
if (isset($_POST['submit']))
{
foreach($_POST as $val)
{
if(trim($val) == '' || empty($val))
{
// echo "Please complete all form fields!";
echo "<meta http-equiv='Refresh' content='3; URL=../add.php'>";
die('Error: Please complete all form fields!' . mysqli_error());
}
}
if (!mysqli_query($conn,$sql))
{
die('Error: ' . mysqli_error($conn));
}
else
{
//echo "1 record added";
echo "Success, You added the ".$manu." ".$model."";
echo "<meta http-equiv='Refresh' content='3; URL=../index.php'>";
}
}
else
{
echo "some error";
}
mysqli_close($conn);
?>
关于PHP elseif 语句用于表单验证并插入到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20920340/