PHP PDO 인스턴스를 Laravel 5.5로 변환 중입니다.PHP PDO를 Laravel PDO로 마이그레이션하면 매개 변수 번호가 잘못됨
//$dbc = new PDO ('mysql:host='. $DB_HOST .';dbname='. $DB_NAME, $DB_USER, $DB_PASS);
$dbc = \Illuminate\Support\Facades\DB::connection('foobardb')->getPdo();
어떤 이유로 인해 내 SELECT 쿼리가 실패합니다.
$query = "SELECT *
FROM foobartable
WHERE date_created > :sunday
AND date_created <= :monday
AND date_updated > :sunday
AND date_updated <= :monday";
$stmt = $dbc->prepare($query);
$stmt->bindValue(':monday', $monday, PDO::PARAM_STR);
$stmt->bindValue(':sunday', $sunday, PDO::PARAM_STR);
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
는 스택 추적에 따르면, 오류가 특히 $stmt->execute();
SQLSTATE [HY093]에 트리거 : 나는 분명히 correct parameters이 잘못된 매개 변수 번호
,이 작품 PHP의 PDO 인스턴스를 사용해도 괜찮습니까? 그렇다면 Laravel과 함께 작동하지 않는 이유는 무엇입니까?
'date_updated? BETWEEN?을 사용하여 이런 종류의 질의를 단순화 할 수 있다는 것을 기억하십시오. 및? '를 사용하는 것이 좋습니다. – tadman
그게 좋은 지적이야. 나는 종종 잊어 버린다. – amflare
'BETWEEN'은 닫힌 경계를 사용하기 때문에'b와 b와 c 사이 어디'는'a> = b와 a <= c'로 변환됩니다. 이것이 구현하려는 규칙과 동일한 지 확인하려면 바운드 값 유형과 데이터베이스 필드 유형을 참조하여 경계가 올바르게 일치하는지 확인해야합니다 (예 : 날짜/날짜 시간/유닉스 타임 스탬프/등) –