Содержание формы как параметр запроса PostGre

1

Итак, я довольно новичок в Интернете. Я всегда играю с HTML и SQL, но недавно я начал работать над проектом. Этот проект в основном создает базу данных со всеми контактными данными сотрудников (имя, адрес электронной почты, номер телефона и т.д.) И показывает его в Интернете. База данных настроена, веб-страница нормально подключается к БД (я могу вызвать PHP и отправить запрос, результаты показаны отлично). НО Я не знаю, как использовать контент <form> (текст, написанный пользователем) в качестве параметра запроса. Я хочу отправить параметр, когда Enter или нажата кнопка "busca".
Вот форма

<form id="searchbox" >
    <label for="sectname">
    </label>
    <input id="sectname" name="sectname" type="search"      placeholder="Busca" list="setor" class="searchbox"/>
    <div style="text-align:center">
        <input id="submit" type="button" class="button" value="BUSCA"/>
    </div>
</form> 

И вот PHP с запросом

$host        = "host=localhost";
$port        = "port=5432";
$dbname      = "dbname=Cards";
$creds = "user=postgres password=12345678";

$db = pg_connect( "$host $port $dbname $creds"  );
if(!$db){
  echo nl2br ("Unable to open database\n");
} 

$sql =<<<EOF
  SELECT * from Cards where nome='Diego Teste';
EOF;

$ret = pg_query($db, $sql);
if(!$ret){
  echo pg_last_error($db);
  exit;
} 
while($row = pg_fetch_assoc($ret)){
   echo "<div>";
  echo "<img src='".$row['pic']."'class='cardcontent2'/>";
   echo "<div class='carddata'>";
  echo nl2br ("\nNome: ".$row['nome'] . "\n");
  echo nl2br ("Email: ".$row['email'] . "\n");
  echo nl2br ("Ramal: ".$row['ramal'] . "\n");
  echo nl2br ("Número: ".$row['numero'] . "\n");
  echo nl2br ("Setor: ".$row['setor'] . "\n\n");
  echo "</div>";
  echo "</div>";
}

pg_close($db);

Я хочу, чтобы "nome =" Diego Teste "был" nome =% var% ", а значение% var% должно быть написано пользователем.

Теги:

1 ответ

0
Лучший ответ

Хитрость состоит в том, чтобы использовать подготовленные заявления: (ref)

$basequery =<<<EOF
    SELECT * from Cards where nome = $1;
EOF;

pg_prepare($db, "my_query", $basequery);
$results = pg_execute($db, "my_query", array($_GET["nome"]));

...

Подготовленные утверждения заботятся о том, чтобы избежать любых значений, которые вы передадите SQL, поэтому вам не нужно делать это самостоятельно. Он защищает вас от SQL-инъекций; некоторые люди заполнят поля форм вредоносным контентом, который может отключить ваш оператор SQL, если вы просто разместите текст поля на месте.

Мой PHP может быть немного ржавым, поэтому, пожалуйста, простите меня, если я допустил незначительные ошибки.

  • 0
    Поскольку вы новичок в сети, если PHP не является обязательным требованием, я бы посоветовал изучить Python или Ruby; эти языки, как правило, более популярны и привлекают большую аудиторию.
  • 0
    Я буду смотреть на Python и Ruby! Я думал, что PHP имеет большую пользовательскую базу, поэтому, когда потребуется помощь, ее будет легче найти.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню