Как использовать переменную формы в моем запросе PHP PHP?

Так что в основном сейчас у меня есть это:

<form action="pgsqltest.php" method="get">
How many rows of data?: <input type="number" name="rod"><br>
<input type="submit">
</form>

<?php
require_once('C:\wamp\www\pgsqlconnect.php');

$query = 'SELECT * FROM db.logs;';
$result = pg_query($query) or die('Query failed: ' . pg_last_error());

$query = 'SELECT * FROM db.logs LIMIT {$_POST['rod']};';
$result = pg_query($query) or die('Query failed: ' . pg_last_error());

То, что я пытаюсь сделать, это получить число от пользователя с именем «rod», а затем я хочу передать его в свой запрос SQL, чтобы они могли получить любой предел или количество строк в таблице базы данных, которую они хотят. Всякий раз, когда я делаю этот код, я получаю эту ошибку:

Parse error: syntax error, unexpected 'rod' (T_STRING) in C:\wamp\www\pgsqltest.php on line 107

Очевидно, это синтаксическая ошибка, но я не могу понять, как на самом деле передать переменную в запрос. Всякий раз, когда я делаю

 echo $rod;

Я получаю сообщение об ошибке

Undefined variable: rod

Поэтому я знаю, что имя формы не является реальной переменной. Как я буду использовать пользовательский ввод в свои SQL-запросы?

Делая это:
$ query = «SELECT * FROM data.epf_logs LIMIT {$ _POST [‘rod’]};»;

дал мне две ошибки:
Первый:

 Notice: Undefined index: rod

Во-вторых:

 Warning: pg_query(): Query failed: ERROR: syntax error at or near &quot;;&quot; LINE 1: SELECT * FROM data.epf_logs LIMIT ; ^

0

Решение

Я бы предложил что-то вроде этого:

<form action="pgsqltest.php" method="get">
How many rows of data?: <input type="number" name="rod" />
<br />
<input type="submit" name="submit" /> <!-- Add a name to allow us to check if sent -->
</form>

Добавил имя, чтобы проверить с

//Setup the connection
$conn = pg_connect("host=sheep port=5432 dbname=mary user=lamb password=foo");

require_once('C:\wamp\www\pgsqlconnect.php');
//Check if POST has been sent
if (isset($_POST['submit']))
{

$query = "SELECT * FROM db.logs;";
//Use connection in all pg_* function calls
$result = pg_query($conn, $query) or die('Query failed: ' . pg_last_error());

//Set rod to be an int of 0 if not set or a safe vause of $_POST['rod'] if set
$rod = (int)(isset($_POST['rod']) ? pg_escape_string($conn, $_POST['rod']) : 0);
$query = "SELECT * FROM db.logs LIMIT {$rod};";
$result = pg_query($conn, $query) or die('Query failed: ' . pg_last_error());
}

Я видел из php.net, что функциональность pg_ * имеет 2 параметра, $connection_stringа также $query в таком порядке, поэтому использование соединения (IMO) является обязательным, проверьте этот а также этот для деталей

Я не собираюсь гарантировать, что это сработает. Просто указатель.

1

Другие решения

Проблема php: вам нужно экранировать одинарные кавычки в {$ _POST [‘rod’]}, т.е. {$ _POST [\ ‘rod \’]} или использовать двойные кавычки вокруг всего sql.

(Но, как говорили другие, это не то, что вы хотите сделать доступным для дикого мира)

0

По вопросам рекламы [email protected]