Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 需要一个文本表单字段_Php - Fatal编程技术网

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