Я работаю над динамическим запросом, который использует переменные для указания таблицы, поля/столбца и значения для поиска. Я получил запрос работать как ожидалось без переменных, как в phpMyAdmin (вручную вводя запрос), так и внутри кода, объединяя переменные в полный запрос.
Однако, когда я использую bindParam()
или bindValue()
для привязки переменных, он возвращает пустой массив.
Здесь мой код:
function search_db($db, $searchTerm, $searchBy, $searchTable){
try{
$stmt = $db->prepare('
SELECT
*
FROM
?
WHERE
? LIKE ?
');
$stmt->bindParam(1, $searchTable);
$stmt->bindParam(2, $searchBy);
$stmt->bindValue(3, '%'. $searchTerm.'%');
$stmt->execute();
} catch(Exception $e) {
return array();
}
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
// database initialization, creates the $db variable
require(ROOT_PATH . "include/database.php");
$matches = search_db($db, 'search term', 'myColumn', 'myTable');
var_dump($matches);
Ожидаемые результаты: массив строк из базы данных
Фактические результаты: пустой массив