$vals=array( $this->bID, intval($data['qsID']), join(',',$pendingDeleteQIDs) ;
$unchangedQuestions=$db->query('DELETE FROM btFormQuestions WHERE bID=? AND questionSetId=? AND msqID IN (?)',$vals);
問題点は、167行目の "join(',',$pendingDeleteQIDs)" で作られる文字列の中に、","が含まれるため、168行目のSQL文の
"msqID IN (?)"に、最初のIDしか与えられないのでひとつしか削除されないというのが原因です。
修正方法はいくつかあると思いますが、以下が修正例です。
$vals=array( $this->bID, intval($data['qsID']);
$unchangedQuestions=$db->query('DELETE FROM btFormQuestions WHERE bID=? AND questionSetId=? AND msqID IN ('.join(',',$pendingDeleteQIDs).')',$vals);
tomoac
Re: 拡張フォームの元のソースからのバグが取れました
$vals=array( $this->bID, intval($data['qsID']), join(',',$pendingDeleteQIDs) ;
$unchangedQuestions=$db->query('DELETE FROM btFormQuestions WHERE bID=? AND questionSetId=? AND msqID IN (?)',$vals);
問題点は、167行目の "join(',',$pendingDeleteQIDs)" で作られる文字列の中に、","が含まれるため、168行目のSQL文の
"msqID IN (?)"に、最初のIDしか与えられないのでひとつしか削除されないというのが原因です。
修正方法はいくつかあると思いますが、以下が修正例です。
$vals=array( $this->bID, intval($data['qsID']);
$unchangedQuestions=$db->query('DELETE FROM btFormQuestions WHERE bID=? AND questionSetId=? AND msqID IN ('.join(',',$pendingDeleteQIDs).')',$vals);