не вставлять повторяющиеся значения в базу данных из формы пользователя - PullRequest
0 голосов
/ 30 ноября 2011

Мне нужно вставить имя из пользовательской формы в базу данных SQL. Для этого у меня есть две программы sql.php может вставить имя в базу данных. form.jsp дает пользователю форму для ввода имени. подключенная база данных MSSQL с использованием odbc

  $connect = odbc_connect('Sedbase','susername', 'pwd');

этот запрос, написанный в sql.php, может вставлять значения в базу данных

   $query=("INSERT INTO namedb(name) VALUES ('$_POST[name]')");
   $result = odbc_exec($connect, $query);}

form.jsp имеет следующие коды

 <html>
  <head>
  <script type="text/javascript">
   function validateform()
  {var y=document.forms["Form"]["comp"].value;
if (y==null || y=="")
    {
alert("");
  return false;
}
 }
  </script>
   </head>

когда я вставляю имя, оно должно быть принято и сохранено в базе данных. это происходит но когда я вставляю то же имя, оно также принимает. Я не хочу вставлять то же имя снова. Он не должен принимать одно и то же имя и должен сообщать пользователю, что имя уже существует в БД, посредством некоторых предупреждений или текстовых сообщений.

Ответы [ 2 ]

0 голосов
/ 30 ноября 2011

Вы можете сделать это двумя способами

  1. Добавить уникальное ограничение на столбец
  2. Проверьте, существует ли имя уже перед вставкой

В любом случае ваш сценарий склонен к SQL-инъекциям. Пожалуйста, санируйте ваш пользовательский ввод: http://en.wikipedia.org/wiki/SQL_injection#Enforcement_at_the_coding_level

0 голосов
/ 30 ноября 2011

Вы должны использовать UNIQ или эквивалент в вашей схеме SQL там, где это необходимо.

Затем, в случае определенного кода возврата, указанного DUPLICATE KEY , вы можете сообщить пользователю в javascript с помощью alert() или просто использовать оператор SELECT перед INSERT -ную

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