폼이 다양한 수의 값을 반환할 수 있으며, 반환된 값을 독트린 쿼리에 사용하려고 시도합니다.
저는 구문 분석된 메시지를 DB에 많이 저장했고, 사용자 입력에 따라 결과를 도출할 수 있기를 원합니다.1-4개의 값(나중에 추가 옵션), 사용자 이름, ID, 이메일 또는 날짜와 시간으로 정렬하고 싶습니다.저는 다른 질문들을 하기 위해 교리를 사용해왔지만, 이번 질문은 도저히 이해할 수가 없습니다.
제 문제는 어떤 값이 메소드에 전달되는지 확인하고 그 값만 조회할 수 있는지 모르겠습니다.
예:
사용자는 사용자 이름에 "밥"을 입력하고 전자 메일 필드에 "bob@example.com "을 입력합니다.이 시나리오를 위해서는 다음과 같은 원칙이 필요합니다.
$queryBuilder
->select('*')
->from('m2m_messages')
->where('username = ' . $queryBuilder->createNamedParameter($params[username]))
->andWhere('email = ' . $queryBuilder->createNamedParameter($params[email]))
$query = $queryBuilder->execute();
하지만 모든 복사본을 개별적으로 만들지 않고 변경했으면 합니다.ID와 이메일을 지정하려면 해당 값만 사용해야 합니다.
SQL에서 사용해야 하는 검색어만 포함된 배열을 통해 값을 전달하고 있습니다.위의 예에서는 다음과 같이 나타납니다.
$params [
username => 'bob',
email => 'bob@example.com'
]
메서드에 전달한 값만 자동으로 사용할 수 있는 if(isset)를 코드에 구현할 방법을 찾지 못했습니다.
제 목표는 20개 이상의 다른 sql 스크립트를 별도로 작성할 필요 없이 임의의 수의 필드에 세부 정보를 입력하고, 입력된 값을 배열로 전달하며, 이들의 모든 조합을 수락하고 sql 스크립트로 조작할 수 있는 것입니다.
이런 거?
$queryBuilder
->select('*')
->from('m2m_messages');
if (count($params) > 0) {
$isFirst = true;
foreach ($params as $paramKey => $paramValue) {
if ($isFirst) {
$queryBuilder->where(sprintf('%1$s = %2$s', $paramKey, $queryBuilder->createNamedParameter($paramValue)));
$isFirst = false;
} else {
$queryBuilder->andWhere(sprintf('%1$s = %2$s', $paramKey, $queryBuilder->createNamedParameter($paramValue)));
}
}
}
$query = $queryBuilder->execute();
이 개념은 매개 변수를 반복하고 에서 제공된 조건을 추가하는 것입니다.$params
.
언급URL : https://stackoverflow.com/questions/65531922/a-form-can-return-varying-number-of-values-trying-to-use-the-returned-values-in
'programing' 카테고리의 다른 글
VBA Excel 매크로에서 유닛 테스트를 설정하는 방법은 무엇입니까? (0) | 2023.09.01 |
---|---|
SQL 데이터베이스에서 사용자의 모든 관계를 찾는 방법은 무엇입니까? (0) | 2023.09.01 |
jQuery는 어디서 배울 수 있습니까?그만한 가치가 있나요? (0) | 2023.09.01 |
가상 환경에 설치할 mysql-connector-python을 가져올 수 없습니다. (0) | 2023.09.01 |
리터럴 값을 가진 함수에 의한 SQL 순서 (0) | 2023.08.27 |