Php 预选与db值匹配的Multiselect选项

Php 预选与db值匹配的Multiselect选项,php,multi-select,selected,Php,Multi Select,Selected,我正在创建一个客户帐户页面,该页面显示数据库中的信息,并允许客户编辑其信息。下面的代码显示了当关联的db列中只有一个值时选择的相关选项,但当列中有多个值时,它停止预选值,因此不适用于页面上的multi-select元素 如何修改if($row1['notifications']=='New_Items')以便在选择了多个值时可以使用?添加方括号['notifications[]']=='New_Items'将抛出错误消息“Notice:Undefined index notifications[

我正在创建一个客户帐户页面,该页面显示数据库中的信息,并允许客户编辑其信息。下面的代码显示了当关联的db列中只有一个值时选择的相关选项,但当列中有多个值时,它停止预选值,因此不适用于页面上的multi-select元素

如何修改
if($row1['notifications']=='New_Items')
以便在选择了多个值时可以使用?添加方括号
['notifications[]']=='New_Items'
将抛出错误消息
“Notice:Undefined index notifications[]”
,并阻止预先选择任何值

多选表单元素的结构为name=“element_name[]”,并作为数组插入到数据库中,插入时数组
会内爆。获取值时,我使用
str_replace
在每个选项后去掉逗号,以便它可以正确地将值与选项的值进行比较(似乎不需要分解值)



我假设$row1['notifications']存储为选定值的串联字符串。如果是,请尝试以下方法:

if(strpos($row1['notifications'], 'New_Items') >= 0) 

请注意,您应该考虑分隔符(不确定为什么要去掉逗号,是否还有空格?)

我不相信它是作为串联字符串存储的(除非在account_information-exec.php中内爆函数这样做)。我去掉逗号的原因是,它可以正确地将值与选项的值进行比较(否则它将逗号作为字符读取)
<?php
require_once "config/config.php"; // Connects to db 
$user_id = $_SESSION['SESS_USER_ID'];   
try {        
$stmt = $conn->prepare('INSERT INTO customer_info (user_id, notifications) 
VALUES(:user_id, :notifications)                  
ON DUPLICATE KEY UPDATE notifications = :notifications2');    
    function bindMultiple($stmt, $params, &$variable, $type) {
    foreach ($params as $param) {
        $stmt->bindParam($param, $variable, $type);
        }
    } 
    $stmt->bindParam(':user_id', $user_id);    
    bindMultiple($stmt, array(':notifications', ':notifications2'), implode(',', $_POST['notifications']), PDO::PARAM_STR);
    $result = $stmt->execute();
} catch(PDOException $e) {echo $e->getMessage();}
if(strpos($row1['notifications'], 'New_Items') >= 0)