Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Запретить запись в базу, если в базе уже есть такая запись - PHP БД  [new]
barmak
Member

Откуда:
Сообщений: 24
Люди добрые помогите кто чем сможет. Есть запрос

$number = $_POST['number'];
$datetime = $_POST['datetime'];
$dept = $_POST['dept'];
$text = $_POST['text'];
$disp = $_POST['disp'];
$usrt = $_POST['usrt'];

$serverName = "172.28.42.19";
$connectionInfo = array( "Database"=>"test", "UID"=>"Supervisor", "PWD"=>"Supervisor");
$conn = sqlsrv_connect( $serverName, $connectionInfo );
if( $conn === false ) {
die( print_r( sqlsrv_errors(), true));
}
$sql = "INSERT INTO jOrdersJounal1 (Num, begin_dts, dept, note, disp)
VALUES ('$number', '$datetime', '$dept', '$text', '$disp')";

$stmt = sqlsrv_query( $conn, $sql);
if( $stmt === true) {
die( print_r( sqlsrv_errors(), true) );
}
sqlsrv_free_stmt( $stmt);

который через форму получает данные и записывает их в бд. Как реализовать чтобы, по полю "Num"-(туда записывается номер нарушения, цифрами) был запрет записи одинаковых данных.
15 апр 16, 05:48    [19059446]     Ответить | Цитировать Сообщить модератору
 Re: Запретить запись в базу, если в базе уже есть такая запись - PHP БД  [new]
Мимоходящий
Guest
barmak,

Как вариант уникальный индекс
15 апр 16, 06:25    [19059477]     Ответить | Цитировать Сообщить модератору
 Re: Запретить запись в базу, если в базе уже есть такая запись - PHP БД  [new]
barmak
Member

Откуда:
Сообщений: 24
Мимоходящий,

Не вариант, проблема в том что, к это таблице подключена прога рабочая на дельфе, писанная другим человеком,а мне поставил задачу сделать ее web-клон и какие либо манипуляции с таблицей мне запрещены
15 апр 16, 07:03    [19059498]     Ответить | Цитировать Сообщить модератору
 Re: Запретить запись в базу, если в базе уже есть такая запись - PHP БД  [new]
Мимоходящий
Guest
barmak,

Ну если даже индекс нельзя создать, то остается только лишь сканировать таблицу каждый раз.
15 апр 16, 07:22    [19059516]     Ответить | Цитировать Сообщить модератору
 Re: Запретить запись в базу, если в базе уже есть такая запись - PHP БД  [new]
barmak
Member

Откуда:
Сообщений: 24
Мимоходящий,

В том то и дело, я не знаю как ее сканировать. Сам код проверки наличия в бд одинаковых значений с sqlsvr написать не могу. Я только учусь, вот и прошу помощи.
15 апр 16, 07:34    [19059531]     Ответить | Цитировать Сообщить модератору
 Re: Запретить запись в базу, если в базе уже есть такая запись - PHP БД  [new]
Guf
Member

Откуда: Новосибирск
Сообщений: 647
barmak,
тогда так напишите:
$sql = "INSERT INTO jOrdersJounal1 (Num, begin_dts, dept, note, disp) 
SELECT '$number', '$datetime', '$dept', '$text', '$disp'
WHERE NOT EXISTS(SELECT * FROM [jOrdersJounal1] [j] WHERE [j].[Num] = '$number')";
15 апр 16, 07:58    [19059561]     Ответить | Цитировать Сообщить модератору
 Re: Запретить запись в базу, если в базе уже есть такая запись - PHP БД  [new]
Guf
Member

Откуда: Новосибирск
Сообщений: 647
barmak,

Только нужно понимать, что if( $stmt === true) в любом случае будет истина. А признаком вставки будет количество строк 1 или 0.
15 апр 16, 08:01    [19059568]     Ответить | Цитировать Сообщить модератору
 Re: Запретить запись в базу, если в базе уже есть такая запись - PHP БД  [new]
barmak
Member

Откуда:
Сообщений: 24
Guf,
$sql = "INSERT INTO jOrdersJounal1 (Num, begin_dts, dept, note, disp)
SELECT '$number', '$datetime', '$dept', '$text', '$disp'
WHERE NOT EXISTS(SELECT * FROM [jOrdersJounal1] [j] WHERE [j].[Num] = '$number')";

При попытке записать в таблицу уже имеющееся значение ничего не происходит, при записи значения которого нет в таблице дает ошибку
Warning: sqlsrv_free_stmt() expects parameter 1 to be resource, boolean given in
15 апр 16, 08:18    [19059595]     Ответить | Цитировать Сообщить модератору
 Re: Запретить запись в базу, если в базе уже есть такая запись - PHP БД  [new]
barmak
Member

Откуда:
Сообщений: 24
Guf,

Простите, ваш метод работает. У меня какой то глюк был.
Можно еще вопрос.
Как сделать чтобы при вводе значения которое уже есть в поле Num выходила ошибка, тапи "Данный номер для записи уже занят"
15 апр 16, 08:34    [19059654]     Ответить | Цитировать Сообщить модератору
 Re: Запретить запись в базу, если в базе уже есть такая запись - PHP БД  [new]
Glory
Member

Откуда:
Сообщений: 104760
barmak
Как сделать чтобы при вводе значения которое уже есть в поле Num выходила ошибка, тапи "Данный номер для записи уже занят"

В форум по PHP
15 апр 16, 08:48    [19059701]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить