如何在PHP的更新函数中不更新任何内容?
我有一个更新用户详细信息的表单。一旦页面上传,用户将获得一些加载了当前数据库值的字段 我可以允许他们上传图片,但这是可选的。提交表单后,所有字段都会更新,但问题在于图像。我怎么能不更新图像字段,但仍然在更新功能中使用它呢 这是一种可行的方法吗如何在PHP的更新函数中不更新任何内容?,php,sql-update,Php,Sql Update,我有一个更新用户详细信息的表单。一旦页面上传,用户将获得一些加载了当前数据库值的字段 我可以允许他们上传图片,但这是可选的。提交表单后,所有字段都会更新,但问题在于图像。我怎么能不更新图像字段,但仍然在更新功能中使用它呢 这是一种可行的方法吗 if (empty($_FILES['logo']['name'])) { // No file was selected for upload, your (re)action goes here } 这是我的职责: public functi
if (empty($_FILES['logo']['name'])) {
// No file was selected for upload, your (re)action goes here
}
这是我的职责:
public function update_header($pageTitle,$title, $slogan, $logo, $titleChoice, $sloganChoice, $logoChoice){
global $pdo;
$sql= "UPDATE `header` SET `pageTitle`=?,`title`=?,`slogan`=?,`logo`=?,`titleChoice`=?,`sloganChoice`=?,`logoChoice`=? WHERE `header_ID` =1";
$query = $pdo->prepare($sql);
$query -> execute(array($pageTitle,$title, $slogan, $logo, $titleChoice, $sloganChoice, $logoChoice));
return "has been successfully updated!!";
}
有什么想法吗
我怎么能不更新图像字段,但仍然在更新功能中使用它呢
如果无法修改update\u header()
函数,则不可能。问题是,函数中的SQL查询会影响logo
字段。因此,您在update\u header
函数中传递的$logo
参数中的任何一个值都将是,并最终将替换logo
字段的当前值
如果您可以修改update\u header()
函数。。。处理此可选字段的一种方法是将if(empty($\u FILES['logo']['name']){
子句放置在函数中,并根据值区分行为,例如:
public function update_header($pageTitle, $title, $slogan, $logo, $titleChoice, $sloganChoice, $logoChoice) {
global $pdo;
if ( ! empty($logo) {
$sql= "UPDATE `header` SET `pageTitle`=?,`title`=?,`slogan`=?,`logo`=?,`titleChoice`=?,`sloganChoice`=?,`logoChoice`=? WHERE `header_ID` =1";
$query = $pdo->prepare($sql);
$query->execute(array($pageTitle,$title, $slogan, $logo, $titleChoice, $sloganChoice, $logoChoice));
} else { // logo empty, then do not update the field
$sql= "UPDATE `header` SET `pageTitle`=?,`title`=?,`slogan`=?,`titleChoice`=?,`sloganChoice`=?,`logoChoice`=? WHERE `header_ID` =1";
$query = $pdo->prepare($sql);
$query->execute(array($pageTitle,$title, $slogan, $titleChoice, $sloganChoice, $logoChoice));
}
// ...
您可以检测用户是否想要更改图像,如果不想,则不要在更新查询中包含与图像相关的列/值。是的,我想您可以使用两种不同的语句,一种是img update,另一种是WithBurst。是否有更简单的方法来更改图像?if(空($_FILES['logo']['name'])){//没有选择要上载的文件,您的(重新)操作将在此处执行}感谢您的帮助!我所做的是获取表中已有的数据,如果数据未更改,则重新输入,如果数据已更改,则使用新变量更新数据。您认为我使用的方法更好还是更好?或者两者都类似@bostaf@user3032640还有第三种方法——不是更新现有的记录d、 删除它并重新输入。我认为如果您对您的解决方案更满意,那么它比我建议的要好。我个人认为这三种方法中没有一种总体上更好。它们可能在某些特定的应用程序/条件下更好,但不是总体上更好。