Динамический список столбцов в подготовленном утверждении - PullRequest
1 голос
/ 28 декабря 2011

Я пытаюсь создать простую функцию поиска, которая будет выбирать и показывать все из столбца.

if(isset($_GET["search"]) && ($_POST["filter"] != "all")) {
    $filter = $_POST["filter"];
    $sql = "SELECT :table FROM johnson LIMIT 0,30";
    $stmt = $dbh->prepare($sql);
    $stmt->bindValue(":table", $filter, PDO::PARAM_STR);
    $stmt->execute();
} 

Этот фрагмент кода работает так, как должен.

Затем я пытаюсь отобразить данные:

<?php } else if($filter != "all") { ?>

<tr>
    <td><?php echo $row["$filter"]; ?></td>
</tr>

<?php 
}

$filter соответствует правильному столбцу базы данных, например, если $filter == 'email', это должно быть SELECT email FROM johnson.

Результат?После запроса к базе данных она просто зацикливает имя столбца, например:

email
email
email
email

А не foo@bar.com и т. Д. Что не так?Использование PDO::FETCH_ASSOC.

Работает даже в жестком коде, без использования :table.

1 Ответ

1 голос
/ 28 декабря 2011

Боюсь, что это ограничение готовых операторов.

Если вы свяжете переменную, она будет эффективно рассматриваться на другом конце как строка - поэтому ваш результат всегда "электронная почта", а нестолбец электронной почты.
По той же причине вы не можете использовать переменную для поля order by .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...