Итак, в моей таблице есть куча кодов, и я не хочу больше одного кода в таблице, поэтому у меня это как "UNIQUE". Но, в то же время, я хочу, чтобы они могли каждый раз ударять свой код.
function some_more_custom_content() {
$output="<BR>";
ob_start();
if ($_REQUEST['code'] != "") {
$code = $_REQUEST['code'];
$query="INSERT INTO `fc` (`code`,`datetime`) values ('" . mysql_real_escape_string($code) . "', now())";
$result=mysql_query($query) or die(mysql_error());
$seconds = time() - strtotime($fetch_array["datetime"]);
if($sql){
echo("Intserted " . htmlentities($code) ." into the top.");
}else{
if ($seconds < 60*60) {
echo ("The code " . htmlentities($code) ." was updated less than an hour ago.");
} else {
$query="DELETE FROM `fc` (`code`,`datetime`) values ('" . mysql_real_escape_string($code) . "', now())";
echo ("Inserted " . htmlentities($code) ." into the top.");
}
}}
Теперь я попытался получить его так, чтобы при работе кода он представлял код как нормальный, который, я думаю, работает.
Теперь, если он получает код, который уже существует, я получаю дублируемую ошибку "Дублировать запись" Боб "для ключа 1"
Но я просто хочу, чтобы он удалил старый запрос, который он нашел, и повторно отправить, если прошло больше часа с момента последнего отправления.
Любые идеи, что я делаю неправильно?
Вы можете просто обновить поле даты/времени в базе данных, чтобы отразить время "рельефа".
if ($_REQUEST['code'] != "")
{
$code = $_REQUEST['code'];
$sql = "SELECT * FROM fc WHERE code = '" . mysql_real_escape_string($code) . "'";
$result = mysql_query($sql);
if (mysql_num_rows($result))
{
$row = mysql_fetch_array($result);
$seconds = time() - strtotime($row["datetime"]);
if ($seconds > 60*60)
{
$sql = "UPDATE fc SET datetime = NOW() WHERE code = '" . mysql_real_escape_string($code) . "'";
mysql_query($sql);
echo("Intserted " . htmlentities($code) ." into the top.");
}
else
{
echo ("The code " . htmlentities($code) ." was updated less than an hour ago.");
}
}
else
{
$sql = "INSERT INTO fc (code, datetime) VALUES ('" . mysql_real_escape_string($code) . "', NOW())";
mysql_query($sql);
echo("Intserted " . htmlentities($code) ." into the top.");
}
}
(Я, вероятно, не должен переписывать ваш код для вас, и есть еще несколько улучшений, которые могут быть сделаны, но это отражает лучшие изменения, которые я могу внести с минимальными изменениями (это имеет смысл?))
Фрэнк, вам не нужны два разных запроса
$query="INSERT INTO `fc` (`code`,`datetime`) values ('" . mysql_real_escape_string($code) . "', now()) ON DUPLICATE KEY UPDATE datetime = case when now() - interval 1 hour > `datetime` then NOW() else `datetime` end";