다음 코드로 테이블을 업데이트하려고합니다. WHERE temp_booking_id = ':temp_booking_id'");
을 실제 현재 세션 temp_id
을 사용하도록 변경하면 쿼리가 실행되지만 자리 표시 자 (예 : 체크 아웃)가 값으로 추가됩니다.PDO 업데이트가 준비된 문에서 자리 표시자를 바꾸지 않음
$data
은 올바른 값을 갖고 있지만 자리 표시자를 바꾸는 것은 아닙니다.
몇 시간 동안이 문제를 쳐다 보면서 나에게있어 문제가 무엇인지 알아 내고 해결책을 찾지 못했습니다. 어레이 ([0] => 00000)
및 I는 자리 주위에 인용 부호를 제거 할 경우는
를 반환PDOStatement:errorInfo()
PDOStatement :: ERRORINFO()를 반환
PDOStatement :: ERRORINFO() 배열 ([0] => HY093)
아이디어가 있으십니까?
try { $data = array( 'temp_booking_id' => $_SESSION['temp_id'], 'check_in' => $in, 'check_out' => $out, 'adults' => $a, 'children1' => $c1, 'children2' => $c2, 'infants' => $i, 'cots' => $c, 'promo_code' => $pc ); $STH = $DBH->prepare("UPDATE b_temp_booking SET check_in = ':check_in', check_out = ':check_out', adults = ':adults', children1 = ':children1', children2 = ':children2', infants = ':infants', cots = ':cots', promo_code = ':promo_code' WHERE temp_booking_id = ':temp_booking_id'"); $STH->execute($data); echo "\nPDOStatement::errorInfo():\n"; $arr = $STH->errorInfo(); print_r($arr); } catch(PDOException $e) { echo 'ERROR: ' . $e->getMessage(); }
마음에 든다면 따옴표로 묶어서 사용하지 않는 것이 좋은 이유가 있습니다. 그렇지 않으면 정적 쿼리를 사용하여 데이터베이스에': this_starts_with_a_colon' 문자열을 어떻게 얻을 수 있습니까? 'HY093'은 그 밖의 다른 것을 가리키고 있지만, 보통 코드뿐만 아니라 그 코드와 관련된 설명을 얻습니다 ..... 흠,'$ DBH-> setAttribute (PDO :: ATTR_EMULATE_PREPARES, false)'를 시도해 보셨습니까? – Wrikken
오, 그게 도움이되지 않는다면,'$ STH-> debugDumpParams();는 무엇을 말합니까? – Wrikken