Люди добрые помогите. Есть запрос PHP: $number = $_POST['number']; $datetime = $_POST['datetime']; $dept = $_POST['dept']; $text = $_POST['text']; $disp = $_POST['disp']; $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"-(туда записывается номер нарушения, цифрами) проходила проверка, если такие данные в поле Num уже есть то выходила бы ошибка типа "Данный номер для записи уже занят", а если таких данных нет, проходила запись новых данных в бд
Не вариант, проблема в том что, к это таблице подключена прога рабочая на дельфе, написанная другим человеком,а мне нужно сделать ее web-клон и какие либо манипуляции с таблицей мне запрещены
PHP: $sql_chek = "SELECT `num` FROM `jOrdersJounal1` WHERE `num`= '".$number."'"; $rs_chek = sqlsrv_query( $conn, $sql); $row_count = sqlsrv_num_rows( $rs_chek ); if ($row_count === false) { echo "Такой номер существует"; }else { $sql = "INSERT INTO jOrdersJounal1 (Num, begin_dts, dept, note, disp) VALUES ('$number', '$datetime', '$dept', '$text', '$disp')"; сделал так, не работает, при вводе любого значения есть оно в поле Num или нет выдает "Такой номер существует"
сделай вар дамп - $row_count... и сразу станет всё понятно тебе (; Код (Text): var_dump($row_count); NULL Такой номер существует
я ввожу в Num через форму значение 1283 которого еще нет в бд, а он пишет что такое значение уже есть
ms sql management studio запрос $sql_chek="SELECT `num` FROM `jOrdersJounal1` WHERE `num`= '".$number."'"; работает как надо --- Добавлено ---
Всм? Так он всегда так и будет орать. Ибо номер не найден, так как, $row_count===false будет равна только в случае ошибки или не найденной результатирующей выборки.
он все время пишет "Такой номер существует"; хоть есть такая запись хоть нет ее --- Добавлено --- Возвращает количество строк в результирующем наборе
проблема вот что код мой не работает, как надо, и я не знаю в чем касяк, я только учусь, и попросил помощи Код (Text): $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_chek = "SELECT * FROM `jOrdersJounal1` WHERE `num`= '".$number."'"; $rs_chek = sqlsrv_query( $conn, $sql); $row_count = sqlsrv_num_rows( $rs_chek ); if ($row_count === false) { echo "Такой номер существует"; }else { $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 есть такой номер та выходило "Такой номер существует", а если нет то шла запись
получи значение поля NUM сравни его с текущим значением и выполняй определенное действие в зависимости от результата сравнения. PHP: $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) { die(print_r(sqlsrv_errors(), true)); } $sql_chek = "SELECT * FROM `jOrdersJounal1` WHERE `num`= '" . $number . "'"; $rs_chek = sqlsrv_query($conn, $sql); $row_count = sqlsrv_num_rows($rs_chek); if ($row_count > 0) { echo "Такой номер существует"; } else { $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); } Попробуй так. По хорошему это все дело надо переписывать. Но я ничего не стал менять)).