更新mysql数据库并跳过空字段

时间:2015-12-10 11:31:29

标签: php html mysql

我有两个页面,edit.php和editdone.php。 在edit.php上,我能够填充信息,这些信息将被发送到editdone.php。然后该页面运行一个更新mysql数据库中数据的查询。

问题是;如果我将edit.php上的输入字段留空,则editdone.php将用空数据替换数据库中的当前信息(无)。

我想要做的是如果在edit.php的字段中写入了某些内容,则使editdone.php更新数据。因此,如果我选择将某些字段留空,例如只填写表单中的一个字段,我只想用填充的数据更新填充的字段,而不是用空数据替换未填充的字段。那么,如果我没有在edit.php中填充任何数据,那么这些字段应保留已存在的数据。

edit.php

articlesQuery = articlesQuery.OrderBy(m => m.OnSale ? m.SalePrice: m.Price);

editdone.php

<?php

				
if (!empty($error_msg)) {
    echo $error_msg;
}
    
$cn = $_POST['cname'];
    
        ?>

<form action="editdone.php" method="POST" enctype="multipart/form-data" name="editdone" onsubmit="return validateForm()">
    
    <input type="hidden" name="namec" value="<?php echo htmlspecialchars($cn); ?>">
    
   <br>
	Fyll i Företagets namn: <br>
	<input type="text" name="company_name" id="company_name">
	
	<br><br>
	
	 Lägg till en logga:
    <input type="file" name="image" id="image">
    
	<br><br>
	
	Description:<br>
   <textarea name="description" id="description" rows="4" cols="50"></textarea>
   <br>
	<br>
	
   Fyll i välkomnings meddelande:<br>
   <textarea name="welcome_text" id="welcome_text" rows="5" cols="50"></textarea>
   <br>
	<br>
	
	 Fyll i ett tack meddelande:<br>
   <textarea name="thanks_message" id="thanks_message" rows="5" cols="50"></textarea>
   <br>
	<br>
	<input type="submit" name="submit" value="Nästa" />
	
</form>

5 个答案:

答案 0 :(得分:0)

尝试替换您的查询。

$q = "UPDATE project SET ";

$q .= $company_name ? "project_name='$company_name', "  : "";
$q .= $description ? "description='$description', "  : "";
$q .= $image ? "image='$image',"  : "";
... so on(all fields)

$q .= "WHERE project_name='$namenamec'";

确保删除,以获取最后一个值

答案 1 :(得分:0)

你可以这样做,我只做了一个变量你可以检查每个发布的变量并附加$ q变量

$q = "UPDATE project SET";

if(isset($_POST['namec']) && $_POST['namec']!=""){
    $q.=" project_name='".$_POST['namec']."' ,";
}

$q=rtrim(',',$q);

$q.="WHERE project_name=".$namenamec;

答案 2 :(得分:0)

    <?php
            ini_set('display_errors',1);
        error_reporting(E_ALL);

        if(mysqli_connect_errno())
        {
            echo mysqli_connect_error();
        }

        $company_name = "";
        $description = "";
        $welcome_text = "";
        $thanks_message = "";
        $image = "";
        $logo = "";
        $image_type = "";

        $namenamec = $_POST['namec'];    
        $company_name = $_POST['company_name'];
        $description = $_POST['description'];
        $welcome_text = $_POST['welcome_text'];
        $thanks_message = $_POST['thanks_message'];
        if( isset($_FILES) )
            {
                if( !empty($_FILES) )
                    {
                        if( isset($_FILES['image']['tmp_name']) )
                            {
                                if( $_FILES['image']['tmp_name'] != "" && !empty($_FILES['image']['tmp_name']) )
                                    {
                                        $image = addslashes (file_get_contents($_FILES['image']['tmp_name']));
                                        if( $image != "" && !empty($image) )
                                            {
                                                $logo = getimagesize($_FILES['image']['tmp_name']);
                                                $image_type = $logo['mime'];
                                            }
                                    }
                            }
                    }
            }


        $update_values = array();
        if($company_name != "")
            $update_values[] = "project_name='".$company_name."'";  
        if($description != "")
            $update_values[] = "description='".$description."'";
        if($image != "")
            $update_values[] = "image='".$image."'";
        if($image_type != "")
            $update_values[] = "image_type='".$image_type."'";
        if($welcome_text != "")
            $update_values[] = "welcome_text='".$welcome_text."'";
        if($thanks_message != "")
            $update_values[] = "thanks_message='".$thanks_message."'";

        $update_values_imploded = implode(', ', $update_values);

        if( !empty($update_values) )
            {
                $q = "UPDATE project SET $update_values_imploded WHERE project_name='$namenamec' ";
                $r = mysqli_query($mysqli,$q);

                if($r)
                {
                    echo "<br>Information stored successfully";

                }
            }



        ?>

答案 3 :(得分:0)

对于 edit.php 中的每个输入/文本区域,请插入带有前一个值的<input type="hidden" value="company_name_old> etc...。然后在 editdone.php 中,检查POST中的值是否为空。

<?php

    $company_name = $_POST['company_name'];

    if($company_name==""){
        $company_name=$_POST['company_name_old'];
    }

    ...
?>

答案 4 :(得分:0)

1个便宜的“ hack”是将字段的当前值分配给输入字段的值,然后将两个字符串或值连接在一起,然后保存该变量。到数据库。