다음과 같은 데이터베이스 쿼리에서 준비된 PDO 문을 사용하려고합니다. 여기서 자리 표시 자 변수는 따옴표로 묶인 숫자로 표시됩니다 (예 : "123 "와"456 : 123 "과"456 "변수 (정규식 표현에 그게 가능하다"쿼리에 REGEX가있는 준비된 SQL 문에 대한 보안
는SELECT `user_ID` as `ID`
FROM `usermeta`
WHERE (`meta_key` = 'custom_fields')
AND (`meta_value` REGEXP '.*"ABC";.*s:[0-9]+:"123".*')
AND (`meta_value` REGEXP '.*"DEF";.*s:[0-9]+:"456".*')
내 질문은 가장 좋은 방법은 전체 정규식 표현에 결합, 아니면 그냥하는 것입니다 "), 아니면 완전히 다른 것? 선호 즉,
이 :
SELECT `user_ID` as `ID`
FROM `usermeta`
WHERE (`meta_key` = 'custom_fields')
AND (`meta_value` :REGEXP1)
AND (`meta_value` :REGEXP2)
$stmt->bindParam(':REGEXP1', "REGEXP '.*"ABC";.*s:[0-9]+:"123".*'");
$stmt->bindParam(':REGEXP2', "REGEXP '.*"DEF";.*s:[0-9]+:"456".*'");
또는이? (자리 표시자를 둘러싼 큰 따옴표에 몇 가지 문제가 있음을 알고 있습니다.)
SELECT `user_ID` as `ID`
FROM `usermeta`
WHERE (`meta_key` = 'custom_fields')
AND (`meta_value` REGEXP '.*"ABC";.*s:[0-9]+:":value1".*')
AND (`meta_value` REGEXP '.*"DEF";.*s:[0-9]+:":value2".*')
$stmt->bindParam(':value1', '123');
$stmt->bindParam(':value2', '456');
감사합니다.
브릴리언트을 . 고맙습니다. – user1596165