PHP: проверка ввода Textarea по таблице базы данных - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь проверить ввод textarea в таблице базы данных. Если какая-либо из записей существует, форма отклоняется. Если запись не найдена, то форма принимается и ввод текстовой области вводится в таблицу базы данных с каждым переводом строки в новую строку.

У меня возникли проблемы, но следующий скрипт, похоже, пропускает часть проверки и переходит просто к добавлению ввода textarea в базу данных.

<?php
if (isset($_GET["submit"])) {
}

$host = "localhost";
$user = "root";
$password = "password";
$database = "test";
// Establish server connection and select database
$dbh = mysqli_connect($host, $user, $password, $database);
  if (mysqli_connect_errno()) {
  die('Unable to connect to database ' . mysqli_connect_error());
  }
  else {
      $text = trim($_POST['serial']);
      $textAr = explode("\n", $text);
      $textAr = array_filter($textAr, 'trim'); // remove any extra \r chars
      foreach ($textAr as $line) {
               $query = mysqli_query($dbh, "SELECT serials FROM `wp27_test6serial` WHERE `serials` = '$line'");
               $result = mysqli_query($dbh, $query);
           if (mysqli_num_rows($result) > 0) {
                     die('entry already exists');
            }
           else {
                     $query = mysqli_query($dbh, "INSERT INTO wp27_test6serial (rtxserials) VALUES ('$line')");
                     echo ('serials submitted');
                }
            }
   }

Может кто-нибудь сказать мне, что не так со сценарием и почему он не проверяется перед тем, как перейти к вставке строки textarea в базу данных?

Спасибо

1 Ответ

0 голосов
/ 09 мая 2018

Вы запрашиваете дважды.

$query = mysqli_query($dbh, "SELECT serials FROM `wp27_test6serial` WHERE `serials` = '$line'");

Должно быть

$query = "SELECT serials FROM `wp27_test6serial` WHERE `serials` = '$line'";

А ваш код уязвим для атаки SQL-инъекцией. Используйте готовые заявления.

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