Къде бъркам в тази заявка

diabolic.bg

The Old Wastelander
Нещо явно бъркам и заявката не се изпълнява:

Код:
$date_2_month_ago = time() - ( 60 * 86400 ); // Първата цифра са дните, а втората - секунди в 24 часа.
$connection = mysql_connect('localhost', 'db_user', 'password') or die("Сайтът не може да се свърже към базата данни"); 
$db = mysql_select_db('top_sites',$connection)or die("Сайтът не може да избере БД");
	
$sqlll = mysql_query("DELETE FROM `dir_links` WHERE LinkBackURL='n', Rank='0' AND Date <='$date_2_month_ago'");

Благодаря за всяка помощ!
 
За: Къде бъркам в тази заявка

За: Къде бъркам в тази заявка

date е запазена дума в mysql по моите скромни познания 🙂
 
За: Къде бъркам в тази заявка

За: Къде бъркам в тази заявка

Не съм много добър в тая област и не схващам намека. Искаш да кажеш, че не мога така да изразя датата ли?
 
За: Къде бъркам в тази заявка

За: Къде бъркам в тази заявка

полето в БД което има име Date можеш ли да го смениш например на nDate - не е добре да се ползва запазена дума
 
За: Къде бъркам в тази заявка

За: Къде бъркам в тази заявка

Таблиците ми работят прекрасно и не виждам смисъл да ги пипам, защото ще трябва да променя още куп неща. Тая приумица със заявката измислих впоследствие и ще я съобразя с наличните реалности. Но явно имам някаква синтактична грешка в заявката.
 
За: Къде бъркам в тази заявка

За: Къде бъркам в тази заявка

Уфффф предпразнично гледам като заварчик 3 раззряд.

Твоа:
DELETE FROM `dir_links` WHERE LinkBackURL='n', Rank='0' AND Date <='$date_2_month_ago'

трябва да стане:
"DELETE FROM `dir_links` WHERE LinkBackURL='n' AND Rank='0' AND Date <='$date_2_month_ago'"

така със запетайката не пуска
 
За: Къде бъркам в тази заявка

За: Къде бъркам в тази заявка

Опитах и с AND вместо запетая и пак не сработи. Явно има и друг проблем, може би с изразяването на датата от преди 2 месеца.
 
За: Къде бъркам в тази заявка

За: Къде бъркам в тази заявка

ок сега да чистим от начало:
значми при мен върна грешка като беше със запетайката.
Така при теб показва грешка или като изпълни заявката няма изтрити редове в БД-то
 
За: Къде бъркам в тази заявка

За: Къде бъркам в тази заявка

ако имаш phpmyadmin имаш лиш възможност да изпълниш заявката в SQL таб-а на базата на съответната таблица

или ако може да постнеш тестови данни да помисля
 
Последно редактирано:
За: Къде бъркам в тази заявка

За: Къде бъркам в тази заявка

Код:
MySQL отговори:  
 #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$sqlll = mysql_query("DELETE FROM `dir_links` WHERE LinkBackURL='n' AND Rank='0'' at line 1
 
Re: Къде бъркам в тази заявка

$sqlll = mysql_query("DELETE FROM `dir_links` WHERE LinkBackURL='n', Rank='0' AND Date <= DATE_SUB(NOW(), INTERVAL 2 MONTH)");
Провери си и типа на колоните. Предполагам Rank ти е integer => Rank=0.
 
За: Къде бъркам в тази заявка

За: Къде бъркам в тази заявка

За съжаление и това не работи - не връща грешка, но и не трие.
Rank tinyint(3) unsigned
 
За: Къде бъркам в тази заявка

За: Къде бъркам в тази заявка

интересен казус 🙂
В базата има ли записи коиито да отговарят на условието за триене
 
За: Къде бъркам в тази заявка

За: Къде бъркам в тази заявка

Разбира се, иначе какво ще пробвам. Имам 6 записа, единият, от които съм защитил с Rank = 5.
 
За: Къде бъркам в тази заявка

За: Къде бъркам в тази заявка

ок. сега да изчистим и логиката:
в заявката се казва да изтрие всички записи, които са добавени преди два месеца и по - малко, тоесто ще изтрие всички записи с период на добавяне 24 окт до днес 24 дек. Така ли трябва да е?
 
За: Къде бъркам в тази заявка

За: Къде бъркам в тази заявка

Точно това е идеята - трие всеки запис по-стар или равен на 24 окт , който има LinkBackURL='n' AND Rank='0'. Целта е чрез промяна на Rank да мога да защитя някои записи от изтриване.
Сложих едно ехо на низа за времето и то се изписва, значи проблемът не е в него.
 

Back
Горе