이 쿼리는 WHERE
인수를 $_POST
에서 가져옵니다. 것은 각 값에 대한 쿼리를 만들지 않고 두 비교 값을 동적으로 가져 오려고합니다. 내가 지금 가지고 있습니다 :
$what = $mysqli->real_escape_string($_POST['what']);
........
$query = "SELECT * FROM list WHERE ";
$query .= $what . " = ? LIMIT 0,10";
........
$stmt->bind_param('s', $what);
내 첫 번째 질문 : 이 실제로 얼마나 안전합니까? 다른 매개 변수를 바인딩 할 수 없기 때문에 같은 것을 관리 할 수있는 더 좋은 방법이 있습니까?
두 번째 문제점은 다음과 같습니다. = ?
을 LIKE %?%
으로 변경하고 싶지만 제대로 작동하지 않습니다. 내가 CONCAT('%', ?, '%')
(나 아는 것)을 사용해 보았지만 여전히 작동하지 않습니다. 기본적으로 내가 달성하고자하는 것은 : WHERE ? LIKE %?%
입니다. 가능한가? 이걸 조금 도와 줄 수 있니?
환호, 알렉스
이것은 안전하지 않으며 허용 된 사이트 목록을 사용합니다. – MarcDefiant
SQL 삽입을 피할 수 있다고해도 테이블에 존재하는 열을 지속적으로 확인하지 않고도 (존재하지 않는 열을 넣기 때문에) 데이터베이스에 대한 쿼리를 위반하는 사람을 피할 수는 없습니다. 제안 된 화이트리스트. –
try :'WHERE .. LIKE? '그리고 나서'bind_param ('s ','% test % ')' – bitWorking