Вставить переменную в операторе 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>';
?>