Вставить переменную в операторе SELECT

У меня есть этот код:

$params = $_GET["params"];
print $params;
if ($_SERVER['REQUEST_METHOD'] == "GET") {
--->//$result = R::getAll( 'SELECT $params FROM user');
} elseif  ($_SERVER['REQUEST_METHOD'] == "POST") {

}
echo json_encode($result);

Как правильно подать $params Переменная в мой ответ. Я делаю запрос через RedBeanPhP

3 ответа

Решение

Я думаю, что вы должны использовать двойные кавычки, чтобы разрешить значение переменной.

вместо:

$result = R::getAll( 'SELECT $params FROM user');

Пытаться:

$result = R::getAll("SELECT $params FROM user");

Если параметры в формате id,username,email Вы можете просто добавить новые, например, так:

$params .= ',telephone';

Имейте в виду: это очень небезопасный способ подключения к вашей базе данных, читайте о SQL Incjection

Вы можете прочитать немного об этом здесь.

Что вам нужно сделать, это отправить запрос get с переменными, которые вы ищете. Это может выглядеть так:

<form action="#" method="get">
  Some variable
  <input type="text" name="params" value="Foobar"><br>
  <input type="submit" value="Submit">
</form>


<?php
$params = $_GET["params"];
echo '<pre>';
print_r($params);
echo '</pre>';

/* This is redundant, considering your question
if ($_SERVER['REQUEST_METHOD'] == "GET") {
--->//$result = R::getAll( 'SELECT $params FROM user');
} elseif  ($_SERVER['REQUEST_METHOD'] == "POST") {

}
echo json_encode($result);
*/
?>

объяснение

HTML

Эта часть кода представляет собой форму, где вы устанавливаете метод как запрос get. Действие-назначение #Это означает, что вы отправляете его на ту же страницу, с которой он был отправлен. И вы определяете переменную $_GET['params'] быть равным Foobar, И это отправляется, когда вы нажимаете кнопку отправки.

<form action="#" method="get">
  Some variable
  <input type="text" name="params" value="Foobar"><br>
  <input type="submit" value="Submit">
</form>

PHP

<?php
$params = $_GET["params"]; // This sets the `params`-get-variable.
echo '<pre>';
print_r($params); // This prints it, so it looks pretty. :-)
echo '</pre>';
?>
Другие вопросы по тегам