[英]php conditional concatenation doesn't work
因此由於某種原因,我需要檢查密碼是否應該更改。 為此,我使用一個變量來查看它是對還是錯。
$query = "UPDATE c_users SET ";
$query .= ($changepass) ? "user_pass = '$password', " : '' . "user_email = '$email', user_role = $role, display_name = '$nick', WHERE ID = $id";
echo $query . "<br>";
如果($changepass)
為false並且我將其打印出來,則此方法可以正常工作:
更新c_users SET user_email ='example@example.com',user_role = 3,display_name ='ROBOT',vip_status = 1 WHERE ID = 550
但是,如果($changepass)
為true,則無法正常工作。 它應該將user_pass = '$password',
附加到語句的其余部分,但是它將打印以下內容:
UPDATE c_users SET user_pass ='$ 2y $ 10 $ l1TylEhM2oz4WdmlwWkcaupjpj1tt / HCyn7XGWbep1judDQb3E7e。',
請注意,該語句的其余部分丟失了。 因此查詢失敗。 如何解決?
那是因為您的三元實際上是:
if ($changepass) {
$query .= "user_pass = '$password', ";
} else {
$query .= '' . "user_email = '$email', user_role = $role, display_name = '$nick', WHERE ID = $id";
}
因此,如果$changepass
為true,則永遠不會追加其他set
值
要實現您想要的目標,您需要做
$query .= ($changepass) ? "user_pass = '$password', " : '';
$query .= "user_email = '$email', user_role = $role, display_name = '$nick', WHERE ID = $id";
但是您真的應該進入21世紀,並在2015年使用帶有綁定變量的准備好的語句
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.