J'essaie de mettre à jour la colonne (LastName) à NULL, si la colonne a une valeur vide, sinon mettez à jour sa valeur en utilisant la requête mysql ci-dessous.
$updateUserInfo = "UPDATE `UsersNew` SET MobileNo = '".$dataArray['MobileNo']."',FirstName = '".$dataArray['FirstName']."', LastName = IF(LastName = '' OR LastName IS NULL, 'NULL', LastName), EmailId = '".$dataArray['EmailId']."' where Uid = '".$uid."';";
Mais la valeur LastName n'est pas mise à jour
Je veux si LastName est nul je veux que la colonne soit mise à jour comme NULL sinon
'". $ dataArray [' LastName ']."'
3 Réponses :
En gros, vous devez changer la section qui met à jour LastName en ceci:
$updateUserInfo = "UPDATE `UsersNew`
SET MobileNo = '".$dataArray['MobileNo']."',
FirstName = '".$dataArray['FirstName']."',
LastName = ".(empty($dataArray['LastName']) ? 'NULL' : "'{$dataArray['LastName']}'") . ",
EmailId = '".$dataArray['EmailId']."'
WHERE Uid = '".$uid."';";
Notez que NULL ne doit pas être entre guillemets . Ainsi, toute votre requête devient:
LastName = " . (empty($dataArray['LastName']) ? 'NULL' : "'{$dataArray['LastName']}'") . "
J'ai essayé ci-dessus, mais si LastName est vide, la colonne LastName est mise à jour comme vide (vide), ne se mettant pas à jour comme prévu "NULL", si j'ai $ dataArray ['LastName] `, alors il met à jour correctement la valeur dans la colonne
@Sushivam voulez-vous dire que $ dataArray ['LastName ] `est vide?
Oui si je ne passe pas LastName ie) si je n'ai pas $ dataArray ['LastName] `, alors ma colonne LastName devrait se mettre à jour comme NULL, au lieu de sa mise à jour comme vide.
@Sushivam désolé j'ai mal compris votre question. Voir ma modification, ainsi qu'une petite démo sur 3v4l.org/ToFKU
Les opérateurs ternaires sont bien pour cela:
$updateUserInfo = "UPDATE `UsersNew`
SET MobileNo = '".$dataArray['MobileNo']."',
FirstName = '".$dataArray['FirstName']."',
LastName = ".$dataArray['MobileNo']? "'".$dataArray['MobileNo']."'":"NULL,
EmailId = '".$dataArray['EmailId']."' where Uid = '".$uid."';";
Attention cependant, vous devez nettoyer l'entrée en utilisant des instructions préparées ou PDO, sinon votre code pourrait être soumis à une injection SQL. p >
Votre requête ternaire génère une erreur de syntaxe, une erreur de syntaxe ou une violation d'accès: 1064 Vous avez une erreur dans votre syntaxe SQL; vérifiez le manuel qui correspond à votre version de serveur MySQL pour la bonne syntaxe à utiliser près de '' '' à la ligne 1 ",
$sql = "UPDATE MyGuests SET lastname='Doe' WHERE id=2";
Cela peut poser des problèmes à des personnes telles que Jennifer Null
En aucun cas, nous ne devons utiliser des valeurs directement ajoutées aux requêtes. Vous pouvez avoir mille façons d'empêcher l'injection, mais il y a toujours le 1001e. Utilisez des déclarations préparées, l'injection est toujours possible mais avec un jeu de caractères approprié, surtout si vous n'avez besoin que de langues anglaises et occidentales, alors l'injection peut être évitée avec des déclarations préparées. Vous pouvez vous soucier d'autres problèmes tels que XSS.