- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
基本上:我得到了带有表单的EditProfile.php
(用于更改个人资料数据),如果选择了所有字段,则它可以正常工作。
问题:我只想更新非空白字段。例如Image
(仅在文件已上传时更新。)和gender
(仅在选择了选项时更新。)此时,它会更新这些将两个字段留空(删除图像补丁和性别选项)。
第二个版本出现错误:
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''username' = CASE WHEN 'Crelix' IS NULL OR CHAR_LENGTH(TRIM(Crelix)) = 0 THEN 'b' at line 2
发送表单数据到不同文件的函数。
if (isset($_POST['edit-btn'])) {
$id = strip_tags($_POST['id']);
$username = strip_tags($_POST['username']);
$email = strip_tags($_POST['email']);
$password = strip_tags($_POST['password']);
if (move_uploaded_file($tempFile,$targetFile)) {
$image = '../Images/Users/Gallery/' . basename($_FILES["file"]["name"]);
}
$firstname = strip_tags($_POST['firstname']);
$surname = strip_tags($_POST['surname']);
$gender = strip_tags($_POST['gender']);
$birthday = strip_tags($_POST['birthday']);
$carsowned = strip_tags($_POST['carsowned']);
$homepage = strip_tags($_POST['homepage']);
$phone = strip_tags($_POST['phone']);
$education = strip_tags($_POST['education']);
$profession = strip_tags($_POST['profession']);
$work = strip_tags($_POST['work']);
$facebook = strip_tags($_POST['facebook']);
$instagram = strip_tags($_POST['instagram']);
$twitter = strip_tags($_POST['twitter']);
$vk = strip_tags($_POST['vk']);
$bio = strip_tags($_POST['bio']);
$interests = strip_tags($_POST['interests']);
$user->editProfile($id,$username,$email,$password,$image,$firstname,$surname,$gender,$birthday,$carsowned,$homepage,$phone,$education,$profession,$work,
$facebook,$instagram,$twitter,$vk,$bio,$interests);
}
更新功能:(有2个版本)没有人工作。
我自己的版本:
public function editProfile($id,$username,$email,$password,$image,$firstname,$surname,$gender,$birthday,$carsowned,$homepage,$phone,$education,$profession,$work,
$facebook,$instagram,$twitter,$vk,$bio,$interests){
try{
$stmt = $this->conn->prepare("UPDATE users SET id=:id,username=:username,email=:email,password=:password,image=:image,firstname=:firstname,surname=:surname,
gender=:gender,birthday=:birthday,carsowned=:carsowned,homepage=:homepage,phone=:phone,education=:education,profession=:profession,work=:work,facebook=:facebook,instagram=:instagram,
twitter=:twitter,vk=:vk,bio=:bio,interests=:interests WHERE id=('$id')");
$stmt->bindparam(":id", $id);
$stmt->bindparam(":username", $username);
$stmt->bindparam(":email", $email);
$stmt->bindparam(":password", $password);
$stmt->bindparam(":image", $image);
$stmt->bindparam(":firstname", $firstname);
$stmt->bindparam(":surname", $surname);
$stmt->bindparam(":gender", $gender);
$stmt->bindparam(":birthday", $birthday);
$stmt->bindparam(":carsowned", $carsowned);
$stmt->bindparam(":homepage", $homepage);
$stmt->bindparam(":phone", $phone);
$stmt->bindparam(":education", $education);
$stmt->bindparam(":profession", $profession);
$stmt->bindparam(":work", $work);
$stmt->bindparam(":facebook", $facebook);
$stmt->bindparam(":instagram", $instagram);
$stmt->bindparam(":twitter", $twitter);
$stmt->bindparam(":vk", $vk);
$stmt->bindparam(":bio", $bio);
$stmt->bindparam(":interests", $interests);
$stmt->execute();
return $stmt;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
在线阅读和搜索帮助,做了类似的事情,但没有任何改变:
public function editProfile($id,$username,$email,$password,$image,$firstname,$surname,$gender,$birthday,$carsowned,$homepage,$phone,$education,$profession,$work,
$facebook,$instagram,$twitter,$vk,$bio,$interests){
try{
$stmt = $this->conn->prepare("UPDATE users SET
'$username' = CASE WHEN '$username' IS NULL OR CHAR_LENGTH(TRIM($username)) = 0 THEN 'bla' ELSE '$username' END,
'$email' = CASE WHEN '$email' IS NULL OR CHAR_LENGTH(TRIM($email)) = 0 THEN 'bla' ELSE '$email' END,
'$password' = CASE WHEN '$password' IS NULL OR CHAR_LENGTH(TRIM($password)) = 0 THEN 'bla' ELSE '$password' END,
'$image' = CASE WHEN '$image' IS NULL OR CHAR_LENGTH(TRIM($image)) = 0 THEN 'bla' ELSE '$image' END,
'$firstname' = CASE WHEN '$firstname' IS NULL OR CHAR_LENGTH(TRIM($firstname)) = 0 THEN 'bla' ELSE '$firstname' END,
'$surname' = CASE WHEN '$surname' IS NULL OR CHAR_LENGTH(TRIM($surname)) = 0 THEN 'bla' ELSE '$surname' END,
'$gender' = CASE WHEN '$gender' IS NULL OR CHAR_LENGTH(TRIM($gender)) = 0 THEN 'bla' ELSE '$gender' END,
'$birthday' = CASE WHEN '$birthday' IS NULL OR CHAR_LENGTH(TRIM($birthday)) = 0 THEN 'bla' ELSE '$birthday' END,
'$carsowned' = CASE WHEN '$carsowned' IS NULL OR CHAR_LENGTH(TRIM($carsowned)) = 0 THEN 'bla' ELSE '$carsowned' END,
'$homepage' = CASE WHEN '$homepage' IS NULL OR CHAR_LENGTH(TRIM($homepage)) = 0 THEN 'bla' ELSE '$homepage' END,
'$phone' = CASE WHEN '$phone' IS NULL OR CHAR_LENGTH(TRIM($phone)) = 0 THEN 'bla' ELSE '$phone' END,
'$education' = CASE WHEN '$education' IS NULL OR CHAR_LENGTH(TRIM($education)) = 0 THEN 'bla' ELSE '$education' END,
'$profession' = CASE WHEN '$profession' IS NULL OR CHAR_LENGTH(TRIM($profession)) = 0 THEN 'bla' ELSE '$profession' END,
'$work' = CASE WHEN '$work' IS NULL OR CHAR_LENGTH(TRIM($work)) = 0 THEN 'bla' ELSE '$work' END,
'$facebook' = CASE WHEN '$facebook' IS NULL OR CHAR_LENGTH(TRIM($facebook)) = 0 THEN 'bla' ELSE '$facebook' END,
'$instagram' = CASE WHEN '$instagram' IS NULL OR CHAR_LENGTH(TRIM($instagram)) = 0 THEN 'bla' ELSE '$instagram' END,
'$twitter' = CASE WHEN '$twitter' IS NULL OR CHAR_LENGTH(TRIM($twitter)) = 0 THEN 'bla' ELSE '$twitter' END,
'$vk' = CASE WHEN '$vk' IS NULL OR CHAR_LENGTH(TRIM($vk)) = 0 THEN 'bla' ELSE '$vk' END,
'$bio' = CASE WHEN '$bio' IS NULL OR CHAR_LENGTH(TRIM($bio)) = 0 THEN 'bla' ELSE '$bio' END,
'$interests' = CASE WHEN '$interests' IS NULL OR CHAR_LENGTH(TRIM($interests)) = 0 THEN 'bla' ELSE '$interests' END,
WHERE `id` = '".$id."' ");
$stmt->execute();
return $stmt;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
编辑:版本 3。仍然存在同样的问题
public function editProfile($id,$username,$email,$password,$image,$firstname,$surname,$gender,$birthday,
$carsowned,$homepage,$phone,$education,$profession,$work,$facebook,$instagram,$twitter,$vk,
$bio,$interests){
try{
$stmt = $this->conn->prepare("UPDATE users SET
username = IF(:username != '', :username, username),
email = IF(:email != '', :email, email),
password = IF(:password != '', :password, password),
image = IF(:image != '', :image, image),
firstname = IF(:firstname != '', :firstname, firstname),
surname = IF(:surname != '', :surname, surname),
gender = IF(:gender != '', :gender, gender),
birthday = IF(:birthday != '', :birthday, birthday),
carsowned = IF(:carsowned != '', :carsowned, carsowned),
homepage = IF(:homepage != '', :homepage, homepage),
phone = IF(:phone != '', :phone, phone),
education = IF(:education != '', :education, education),
profession = IF(:profession != '', :profession, profession),
work = IF(:work != '', :work, work),
facebook = IF(:facebook != '', :facebook, facebook),
instagram = IF(:instagram != '', :instagram, instagram),
twitter = IF(:twitter != '', :twitter, twitter),
vk = IF(:vk != '', :vk, vk),
bio = IF(:bio != '', :bio, bio),
interests = IF(:interests != '', :interests, interests),
WHERE id = :id");
$stmt->execute();
return $stmt;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
这些行中的错误:
if (move_uploaded_file($tempFile,$targetFile)) {
$image = '../Images/Users/Gallery/' . basename($_FILES["file"]["name"]);
}
$gender = strip_tags($_POST['gender']);
$user->editProfile($id,$username,$email,$password,$image,$firstname,$surname,$gender,$birthday,$carsowned,$homepage,$phone,$education,$profession,$work,
$facebook,$instagram,$twitter,$vk,$bio,$interests);
最佳答案
使用 IF()
表达式,如果该值不为空,则返回该值,否则返回该列的旧值。
$stmt = $this->conn->prepare("UPDATE users SET
username = IF(:username != '', :username, username),
email = IF(:email != '', :email, email),
password = IF(:password != '', :password, password),
...
WHERE id = :id");
此外,设置 id
列没有意义,因为这是您在 WHERE
子句中匹配的列。
关于php - MySQL更新功能(我不想更新空白字段,而是更新所有其他字段),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45993578/
我正在构建一个 RCP 应用程序,其中每个季度都会更新功能/插件。因此,如果用户选择自动更新功能/插件,则会下载更新插件的新 jar,但旧插件仍在使用我不再使用的磁盘空间。 我厌倦了删除包含旧 jar
我如何从外部 Controller 功能中调用 Controller 内部的功能,例如电话间隙回调功能 这是 Controller 外部定义的功能 function onDeviceReady()
如果某个功能(例如 MediaSource)可用,我如何使用 Google Dart 检查。 new MediaSource() 抛出一个错误。如何以编程方式检查此类或功能是否存在?有任何想法吗?是否
我正在尝试运行 Azure Orchestrations,突然我开始从 statusQueryGetUri 收到错误: 协调器函数“UploadDocumentOrchestrator”失败:函数“U
我见过 iPhone 上的应用程序,如果在 3.0 上运行,将使用 3.0 功能/API,例如应用内电子邮件编辑器,如果在 2.x 上运行,则不使用这些功能,并退出应用程序以启动邮件相反。 这是怎么做
这是 DB 规范化理论中的一个概念: Third normal form is violated when a non-key field is a fact about another non-ke
如果我定义 #if SOMETHING #endif 而且我还没有在任何地方定义 SOMETHING。 #if 中的代码会编译吗? 最佳答案 当#if的参数表达式中使用的名称未定义为宏时(在所有其他宏
我刚刚澄清了 A* 路径查找应该如何在两条路径具有相等值的 [情况] 下运行,无论是在计算期间还是在结束时,如果有两条相等的短路径。 例如,我在我的起始节点,我可以扩展到两个可能的节点,但它们都具有相
Java有没有类似下面的东西 宏 一种遍历所有私有(private)字段的方法 类似于 smalltalk symbols 的东西——即用于快速比较静态字符串的东西? 请注意,我正在尝试为 black
这个程序应该将华氏度转换为摄氏度: #include int main() { float fahrenheit, celsius; int max, min, step;
当打开PC缓存功能后, 软件将采用先进先出的原则排队对示波器采集的每一帧数据, 进行帧缓存。 当发现屏幕中有感兴趣的波形掠过时, 鼠标点击软件的(暂停)按钮, 可以选择回看某一帧的波形
我有一个特殊的(虚拟)函数,我想在沙盒环境中使用它: disable.system.call eval(parse(text = 'model.frame("1 ~ 1")'), envir = e
使用新的 Service 实现,我是否必须为我的所有服务提供一个 Options 方法? 使用我的所有服务当前使用的旧 ServiceBase 方法,OPTIONS 返回 OK,但没有 Access-
我正在阅读 Fogus 的关于 Clojure 的喜悦的书,在并行编程章节中,我看到了一个函数定义,它肯定想说明一些重要的事情,但我不知道是什么。此外,我看不到这个函数有什么用 - 当我执行时,它什么
我有大量的 C 代码,大部分代码被注释掉和/或 #if 0。当我使用 % 键匹配 if-else 的左括号和右括号时,它也匹配注释掉的代码。 有没有办法或vim插件在匹配括号时不考虑注释掉或#if 0
我有这个功能: map(map(fn x =>[x])) [[],[1],[2,3,4]]; 产生: val it = [[],[[1]],[[2],[3],[4]]] 我不明白这个功能是如何工作的。
我使用 Visual Studio 代码创建了一个函数应用程序,然后发布了它。功能应用程序运行良好。我现在在功能门户中使用代码部署功能(KUDU)并跳过构建。下面是日志 9:55:46 AM
我有一个数据框df: userID Score Task_Alpha Task_Beta Task_Charlie Task_Delta 3108 -8.00 Easy Easy
我真的无法解决这个问题: 我有一个返回数据框的函数。但是,数据框仅打印在我的控制台中,尽管我希望将其存储在工作空间中。我怎样才能做到这一点? 样本数据: n <- 32640 t <- seq(3*p
有没有办法找出所有可能的激活器命令行选项? activator -help仅提供最低限度的可用选项/功能列表,但所有好的东西都隐藏起来,即使在 typesafe 网站在线文档中也不可用。 到目前为止,
我是一名优秀的程序员,十分优秀!