2013-09-04 2 views
0

Я пытаюсь проверить уникальную запись при редактировании/обновлении записи. Я проверяю, выполнив поиск в базе данных, если запись не найдена, а затем еще раз распечатайте сообщение об ошибке. Если запись (я использую этот же процесс при добавлении новых записей)Подтвердить уникальную запись при редактировании/обновлении

Мой код проверки является:

if (!empty($_POST['ip_add'])) { 
    if (filter_var($_POST['ip_add'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) === false) { 
     $errors[] = $_POST['ip_add'] . ' is not a valid IPv4'; 
    } else { 
     $ip = $_POST['ip_add']; 
     //check if ip is unique 
     $qip = 'select INET_NTOA(ip_add) AS ip_add from equipment where ip_add = INET_ATON(:ip)'; 
     $database->query($qip); 

     $database->bind(':ip', $ip); 
     $rs = $database->resultset(); 
     //execute our query 
     $database->execute(); 
     if ($rs != null) { 
      $errors[] = $_POST['ip_add'] . ' is not unique'; 
     } else { 
      $ip_add = $_POST['ip_add']; 
     } 
    } 
} else { 
    $errors[] = "Please enter a valid IP address"; 
} 

, если нет базы данных ошибок обновления:

$query = " 
    UPDATE equipment 
    SET site_code = :site_code, 
    site_id = :site_id, 
    system_name = :system_name, 
    ip_add = INET_ATON(:ip_add), 
    mcast = INET_ATON(:mcast), 
    sys_loc = :sys_loc, 
    systype = :systype, 
    itamname = :itamname, 
    dimetis = :dimetis, 
    DNS = :DNS 
    WHERE id = :id 
"; 

//prepare query for excecution 
$database->query($query); 
//bind the parameters 
$database->bind(':site_code', $site_code); 
$database->bind(':site_id', $site_id); 
$database->bind(':system_name', $system_name); 
$database->bind(':ip_add', $ip_add); 
$database->bind(':mcast', $multicast); 
$database->bind(':sys_loc', $sys_loc); 
$database->bind(':systype', $systype); 
$database->bind(':itamname', $itamname); 
$database->bind(':dimetis', $_POST['dimetis']); 
$database->bind(':DNS', $_POST['DNS']); 
$database->bind(':id', $_POST['id']); 

// Execute the query 
$database->execute(); 
echo "Record was updated."; 
} 
} 

Я думал, что я может выполнять поиск по всем записям, которые в настоящее время редактируются. Как мне это сделать? Есть ли лучший способ проверить, уникален ли IP addrss при редактировании записи?

+0

Так что же это вы просите здесь? –

+0

Я понял это, поскольку я писал вопрос об этом, исключив текущую запись из обновления. Я оставил его, поскольку это может быть полезно кому-то другому. Наверное, я спрашиваю, является ли это лучшим способом или есть другой/лучший способ? – Nigel

+0

Комментарий, а не на ваш вопрос, но что с ним делать. Вы можете ответить на свой вопрос. Выньте ответ из своего вопроса выше и вставьте его в ответ. Таким образом, ясно, что на этот вопрос был дан ответ, вместо того, чтобы оставить его непонятным, что вы хотите. –

ответ

0

Я получил эту работу быть за исключением текущей записи из поиска:

$qip = ' 
    SELECT 
    INET_NTOA(ip_add) AS ip_add 
    FROM equipment 
    WHERE 
    ip_add = INET_ATON(:ip) 
    AND id != :id 
'; 
$database->query($qip); 

$database->bind(':ip', $ip); 
$database->bind(':id', $id); 
Смежные вопросы