我从未对键/值表执行过bind_param()
。所以,我不确定CASE WHEN是否可以这样应用。
CCD_ 2列保存所有这些";cust_xx"项,而它们的实际值位于value
列中。
此外,我不确定$who(这是一个INT变量(是否需要绑定。此外,我不确定我应该使用ssss还是ddddd。它们是表单中输入的两倍,但它们的字段(网络论坛上的个人资料字段(只是VARCHAR。
无论如何,我得到
PHP致命错误:未捕获错误:调用bool 上的成员函数bind_param((
$stmt = $connmember->prepare(" UPDATE smfqg_themes SET
`value` = CASE( WHEN (`variable` = 'cust_novpil') THEN ?
WHEN (`variable` = 'cust_decpil') THEN ?
WHEN (`variable` = 'cust_janpil') THEN ?
WHEN (`variable` = 'cust_febpil') THEN ?
WHEN (`variable` = 'cust_marpil') THEN ?
END)
WHERE id_member = '$who' ");
$stmt->bind_param('ddddd', $novpil, $decpil, $janpil, $febpil, $marpil);
$stmt->execute();
也为id
使用占位符。
CASE
在WHEN
子句周围没有括号。您也可以使用较短的CASE column WHEN value
语法。
如果某些行的variable
不是其中一个值,那么最好使用ELSE
子句来保持variable
的值不变。否则将设置为NULL
。
$stmt = $connmember->prepare(" UPDATE smfqg_themes SET
`value` = CASE `variable`
WHEN 'cust_novpil' THEN ?
WHEN 'cust_decpil' THEN ?
WHEN 'cust_janpil' THEN ?
WHEN 'cust_febpil' THEN ?
WHEN 'cust_marpil' THEN ?
ELSE `value`
END
WHERE id_member = ? ");
$stmt->bind_param('ddddd', $novpil, $decpil, $janpil, $febpil, $marpil, $who);
$stmt->execute();