이 주제에 대한 많은 힌트가 있는데, 이것을 시도했습니다 : How to create a secure mysql prepared statement in php? 및 그 밖의 많은 것들이 있지만 아무런 효과가 없습니다. 데이터베이스에서 무언가를 선택하고 매개 변수없이 쿼리하려면 괜찮습니다. 그러나 매개 변수가있는 열과 테이블에 대한 데이터를 원한다면 작동하지 않고 빈 배열을 반환합니다. 어떤 힌트?PDO 양식 선택 MYSQL db
function getDataByColumn($column, $table) {
try {
$connection = new PDO("mysql:dbname=vydap;charset=utf8;host=127.0.0.1", "...","...");
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
$query = "SELECT ? FROM ?";
// $query = "SELECT :column FROM :table";
$stmt = $connection->prepare($query);
// $stmt->bindParam(':column', $column);
// $stmt->bindParam(':table', $table);
$stmt->bindParam(1, $column);
$stmt->bindParam(2, $table);
$stmt->execute();
$result = $stmt->fetchAll();
var_dump($result);
}
맞아요, 그런 식으로 작동하지 않습니다. 이것은 자주 묻습니다. 자리 표시자는 임의의 SQL 문 작성을위한 것이 아닙니다. 이들의 목적은 준비된 명령문에서 스칼라 값을 대체하는 것입니다. 동적 테이블 또는 열 이름을 안전하게 사용하려면 허용 가능한 값의 배열 목록에 대해 입력 테이블 및 열 이름을 확인해야합니다. –