Php 需要一个文本表单字段
我一直在努力使文本表单字段成为必填字段。因此,当有人不填写姓名时,他会收到一个错误,如“未填写标题!” 我现在得到了这个,但它不工作,因为当我提交它插入到数据库Php 需要一个文本表单字段,php,Php,我一直在努力使文本表单字段成为必填字段。因此,当有人不填写姓名时,他会收到一个错误,如“未填写标题!” 我现在得到了这个,但它不工作,因为当我提交它插入到数据库 if(isset($_POST['submit'])) { $update = "UPDATE post SET `title`='$_POST[title]', `pic`='$_POST[pic]', `youtube`='$_POST[youtube]' WHERE id = $_POST[id]"; $db-&g
if(isset($_POST['submit'])) {
$update = "UPDATE post SET `title`='$_POST[title]', `pic`='$_POST[pic]', `youtube`='$_POST[youtube]' WHERE id = $_POST[id]";
$db->query($update) or die($db->error);
if($_POST['title'] == "") {
$error = "Title is required!";
}
if ($_POST['pic'] == "") {
$error = "Picture is required!";
}
if(isset($error)){
echo $error;
} else {
echo '<p>Your post has been updated!</p>';
}
}
if(isset($\u POST['submit'])){
$update=“update post SET`title`='$\u post[title],`pic`='$\u post[pic],`youtube`='$\u post[youtube]”,其中id=$\u post[id];
$db->query($update)或die($db->error);
如果($_POST['title']==“”){
$error=“需要标题!”;
}
如果($_POST['pic']==“”){
$error=“需要图片!”;
}
如果(isset($error)){
echo$错误;
}否则{
回显“您的帖子已更新!”;
}
}
如果发现错误,您需要停止代码的执行,而不仅仅是回显错误。只有在没有错误的情况下,才应执行将数据提交到数据库的所有其他代码。试着这样做:
编辑:看到代码更新后,您需要执行以下操作:
if(isset($_POST['submit'])) {
if(!isset($_POST['title']) || trim($_POST['title']) == "") {
$error = "Title is required!";
}
if (!isset($_POST['pic']) || trim($_POST['pic']) == "") {
$error = "Picture is required!";
}
if(isset($error)){
echo $error;
} else {
$update = "UPDATE post SET `title`='" . mysql_real_escape_string($_POST['title']) . "', `pic`='" . mysql_real_escape_string($_POST['pic']) ."', `youtube`='" . mysql_real_escape_string($_POST['youtube']) ."' WHERE id = " . mysql_real_escape_string($_POST['id']);
$db->query($update) or die($db->error);
echo '<p>Your post has been updated!</p>';
}
}
if(isset($\u POST['submit'])){
如果(!isset($_POST['title'])| | trim($_POST['title'])==“”){
$error=“需要标题!”;
}
如果(!isset($_POST['pic'])| | trim($_POST['pic'])==“”){
$error=“需要图片!”;
}
如果(isset($error)){
echo$错误;
}否则{
$update=“update post SET`title`=”.mysql\u real\u escape\u string($\u post['title'])。“,`pic`=”.mysql\u real\u escape\u string($\u post['youtube'])。”其中id=“.mysql\u real\u escape\u string($\u post['id'));
$db->query($update)或die($db->error);
回显“您的帖子已更新!”;
}
}
问题是,无论验证之后发生了什么,您的数据都被提交到了数据库中——当您检查错误时,已经太晚了,因为SQL已经被执行了。
如果按照上面所示的方式执行,则只有在未设置
$error
变量时才会提交,这正是您所需要的。如果发现错误,您需要停止执行代码,而不仅仅是回显错误。只有在没有错误的情况下,才应执行将数据提交到数据库的所有其他代码。试着这样做:
编辑:看到代码更新后,您需要执行以下操作:
if(isset($_POST['submit'])) {
if(!isset($_POST['title']) || trim($_POST['title']) == "") {
$error = "Title is required!";
}
if (!isset($_POST['pic']) || trim($_POST['pic']) == "") {
$error = "Picture is required!";
}
if(isset($error)){
echo $error;
} else {
$update = "UPDATE post SET `title`='" . mysql_real_escape_string($_POST['title']) . "', `pic`='" . mysql_real_escape_string($_POST['pic']) ."', `youtube`='" . mysql_real_escape_string($_POST['youtube']) ."' WHERE id = " . mysql_real_escape_string($_POST['id']);
$db->query($update) or die($db->error);
echo '<p>Your post has been updated!</p>';
}
}
if(isset($\u POST['submit'])){
如果(!isset($_POST['title'])| | trim($_POST['title'])==“”){
$error=“需要标题!”;
}
如果(!isset($_POST['pic'])| | trim($_POST['pic'])==“”){
$error=“需要图片!”;
}
如果(isset($error)){
echo$错误;
}否则{
$update=“update post SET`title`=”.mysql\u real\u escape\u string($\u post['title'])。“,`pic`=”.mysql\u real\u escape\u string($\u post['youtube'])。”其中id=“.mysql\u real\u escape\u string($\u post['id'));
$db->query($update)或die($db->error);
回显“您的帖子已更新!”;
}
}
问题是,无论验证之后发生了什么,您的数据都被提交到了数据库中——当您检查错误时,已经太晚了,因为SQL已经被执行了。
如果您按照上面所示的方式进行操作,它将仅在未设置
$error
变量的情况下提交,这正是您所需要的。我不仅仅依赖于
if($_POST['title'] == "")
if(!isset($_POST['title'] || $_POST['title'] == "" || $_POST['title'] == " ")
{
// Error
}
else
{
// Database query
}
因为如果有人在文本字段中输入空格,它将不起作用。首先,标题不应该太长?所以你可以为它设置一个最大长度
还可以运行一些其他检查,例如:
我不会仅仅依靠你
if($_POST['title'] == "")
if(!isset($_POST['title'] || $_POST['title'] == "" || $_POST['title'] == " ")
{
// Error
}
else
{
// Database query
}
您需要else,否则它将始终执行数据库查询,不管他们是否正确填写了表单。我不会仅仅依靠它
if($_POST['title'] == "")
if(!isset($_POST['title'] || $_POST['title'] == "" || $_POST['title'] == " ")
{
// Error
}
else
{
// Database query
}
因为如果有人在文本字段中输入空格,它将不起作用。首先,标题不应该太长?所以你可以为它设置一个最大长度
还可以运行一些其他检查,例如:
我不会仅仅依靠你
if($_POST['title'] == "")
if(!isset($_POST['title'] || $_POST['title'] == "" || $_POST['title'] == " ")
{
// Error
}
else
{
// Database query
}
您需要else,否则它将始终执行数据库查询,无论他们是否正确填写了表单。在运行查询之前是否确保没有错误?听起来不太像。向其他人展示你的代码,你是如何处理错误的?空白是否算作空的?只要
trim()
那篇特定的帖子,然后将它与empty()
进行比较,所以把数据库代码放在else
部分…@Benny是的,正如我所说,很高兴拥有它,但绝对不要依赖它。在运行查询之前,你是否确保没有错误?听起来不太像。向其他人展示你的代码,你是如何处理错误的?空白是否算作空的?只要trim()@Benny,你应该删除所有空格/白色字符,然后检查长度。我应该提到trim()函数!真不敢相信我竟然忘了。我有一个函数test_input($str),然后对它进行修剪、stripslashes、mysqli_real_escape()等,然后返回要使用的值。那么6个空格呢?:)@Benny,你应该删除所有空格/白色字符,然后检查长度。我应该提到trim()函数!真不敢相信我竟然忘了。我有一个函数test_input($str),然后对其进行修剪、stripslashes、mysqli_real_escape()等,然后返回要使用的值。-1表示SQL注入漏洞。在stackoverflow中,我们应该始终通知初学者他们所犯的错误,并尝试纠正它们。将表单值传递给mysql