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

Php 更新mysql数据库并跳过空字段,php,html,mysql,Php,Html,Mysql,我有两个页面,edit.php和editdone.php。 在edit.php上,我可以填写信息,这些信息将被发送到editdone.php。然后,该页面将运行一个查询来更新mysql数据库中的数据 问题是,;如果我将edit.php上的输入字段留空,那么editdone.php将用空数据(无)替换数据库中的当前信息 我想做的是,如果edit.php字段中写入了内容,则让editdone.php更新数据。因此,如果我选择保留一些字段为空,例如只填写表单中的一个字段,我只想用填充的数据更新填充的字

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

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

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

edit.php



尝试这样替换您的查询

$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'";

确保删除最后一个值的

尝试这样替换查询

$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'";

请确保删除最后一个值的

您可以这样做。我只创建了一个变量,您可以检查每个已发布的变量,并将$q变量附加到

$q = "UPDATE project SET";

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

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

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

您可以在这里这样做,我只做了一个变量,您可以检查每个发布的变量,并将$q变量附加为on

$q = "UPDATE project SET";

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

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

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

对于edit.php中的每个输入/文本区域,在edit.php中的每个输入/文本区域插入一个
,插入一个
廉价“黑客”将字段的当前值指定给输入字段的值,然后将两个字符串或值合并在一起,然后将该变量保存到数据库。

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

它确实起作用,但我会收到这些错误消息,即使代码执行了它的本意。警告:第76行的C:\xampp\htdocs\wildfire\editdone.php中的文件名不能为空警告:getimagesize():第77行的C:\xampp\htdocs\wildfire\editdone.php中的文件名不能为空,这些行分别为76和77$image=addslashes(file_get_contents($_FILES['image']['tmp_name'])$logo=getimagesize($_文件['image']['tmp_名称]]);代码已更新。请检查更新版本。谢谢。如果你仍然收到警告,那么请告诉我。谢谢。是的,但现在只有一个;警告:文件\u get\u contents():第82行C:\xampp\htdocs\wildfire\editdone.php中的文件名不能为空。就是这一行:$image=addslashes(file_get_contents($_FILES['image']['tmp_name']);工作完美。谢谢!!它确实可以工作,但是我得到了这些错误消息,即使代码做了它应该做的事情。警告:第76行的C:\xampp\htdocs\wildfire\editdone.php中的文件名不能为空警告:getimagesize():第77行的C:\xampp\htdocs\wildfire\editdone.php中的文件名不能为空,这些行分别为76和77$image=addslashes(file_get_contents($_FILES['image']['tmp_name'])$logo=getimagesize($_文件['image']['tmp_名称]]);代码已更新。请检查更新版本。谢谢。如果你仍然收到警告,那么请告诉我。谢谢。是的,但现在只有一个;警告:文件\u get\u contents():第82行C:\xampp\htdocs\wildfire\editdone.php中的文件名不能为空。就是这一行:$image=addslashes(file_get_contents($_FILES['image']['tmp_name']);工作完美。谢谢!!