Неработающий отчет обновления PDO не работает

PDO-bindparam-в-один-заявление

Я очень новичок в PDO, и я думаю, что я потерял. Я хотел использовать одни и те же переменные для вставки и обновления обоих.

function pdoSet($fields, &$values, $source = array()){ $set = ''; $values = array(); if(!$source) $source = &$_POST; foreach($fields as $field){ if(isset($source[$field])){ $set .= " $field =:$field, "; $values[$field] = $source[$field]; } } return substr($set, 0, -2); } $fields = array( 'name' , 'part' , 'tel' , 'email' , 'title' , 'contents' ); if(!$idx){ $fields[] = 'reg_date'; $values[] = 'now()'; $st = $pdo -> prepare("insert into qna_board set ".pdoSet($fields, $values)); }else{ $st = $pdo -> prepare("update qna_board set ".pdoSet($fields, $values)." where idx = :idx"); $st ->bindParam(':idx', $idx); } $st->execute($values); 

Это было успешно для вставки, но не для обновления. Когда я использовал $ idx вместо: idx, он сработал. Не могли бы вы рассказать мне, в чем проблема?