В настоящее время у меня есть следующий код:
$editsystem_exists = "UPDATE `tbl` SET `system_customer`='{$system_customer}', `system_id`='{$system_id}' WHERE `id`='".$systemid_safe."'";
$result_editsystem_exists = mysql_query($editsystem_exists);
if (!$result_editsystem_exists) {
echo '<font color="#66990F"><B><center>Changes Saved</B><BR>The System ID has not changed.<BR></center></font>';
echo mysql_error();
} else {
echo '<font color="#66990F"><B><center>Changes Saved</B><BR></center></font>';
}
system_id
это уникальный ключ. Моя проблема в том, что я хочу, чтобы запрос продолжался даже в случае возникновения ошибки, но отображал ошибку, не обновляя system_id, если он повторяется. Я пытался использовать @
и это ничего не делает. Независимо от того, что я пытался, если он отображает ошибку, запрос останавливается и ничего не обновляется. Я просто хочу пропустить system_id, но обновлять все остальное ТОЛЬКО ЕСЛИ system_id является дубликатом. Если это не дубликат, обновите все.
Примечание: я разрабатываю модуль для чего-то, что не поддерживает mysqli или PDO. Я застрял с помощью mysql_
РЕДАКТИРОВАТЬ: это мой оригинальный код
Прежде чем я начал играть с этим, это был мой оригинальный код
#Begin checking for an existing system id
$system_id_check = "SELECT `system_id` FROM `tbl` WHERE `system_id`='".$system_id."'";
$search_system_id = mysql_query($system_id_check);
$result_check = mysql_num_rows($search_system_id);
if($result_check !== 0){
#Connect to the DB to get the System ID
$query_sysid = "SELECT `id`, `system_id` FROM `tbl` WHERE `id`='".$systemid_safe."'";
$result_sysid = mysql_query($query_sysid); if (!$result_sysid) { die('Invalid query: ' . mysql_error());}
$row0 = mysql_fetch_array($result_sysid);
#Update all but the System ID if it already exists
$editsystem_exists = "UPDATE `tbl` SET `system_customer`='{$system_customer}' WHERE `id`='".$systemid_safe."'";
mysql_query($editsystem_exists); echo '<font color="#66990F"><B><center>Changes Saved</B><BR>The System ID has not changed.</center></font>';
} else {
#Connect to the DB to get the System ID
$query_sysid = "SELECT `id`, `system_id` FROM `tbl` WHERE `id`='".$systemid_safe."'";
$result_sysid = mysql_query($query_sysid); if (!$result_sysid) { die('Invalid query: ' . mysql_error()); }
$row0 = mysql_fetch_array($result_sysid);
#Update the system if the System ID does not exist
$editsystem = "UPDATE `tbl` SET `system_customer`='{$system_customer}', `system_id`='{$system_id}' WHERE `id`='".$systemid_safe."'";
#Success Message
mysql_query($editsystem); echo '<font color="#66990F"><B><center>Changes Saved</B><BR>The System ID was updated.</center></font>'; }}
Я просто не хотел отображать сообщения «Не изменено» или «Изменено» для любого выполненного обновления. Если идентификатор системы уже существует, он не будет обновлять поле идентификатора системы. Вместо того, чтобы увидеть «Не изменено», я хотел указать причину, по которой оно не изменилось, поэтому if
Команда в приведенном выше коде. Приведенный выше пример, если идентификатор системы найден.
ИМО, вы должны проверить, если system_id
существует с помощью оператора выбора.
if (mysql_query("SELECT 1 FROM tbl WHERE system_id = {$system_id}")) {
$editsystem_exists = "UPDATE `tbl` SET `system_customer`='{$system_customer}' WHERE `id`='" . $systemid_safe . "'";
} else {
$editsystem_exists = "UPDATE `tbl` SET `system_customer`='{$system_customer}', `system_id`='{$system_id}' WHERE `id`='" . $systemid_safe . "'";
}
Других решений пока нет …