Я хотел бы сделать миссию щелчка php. Мне нужно указать заголовок и url цикла mysql при условии.Mysql выберите данные, где userid и clickid не существует
мое состояние (показать t2.title,t2.url
), если userid
и t2.id
не существует в таблице click_log
при t2.clickdate = $todaydate
.
У меня есть 2 таблицы, первый это click_log
А.С. t1
+--------+-----------+----------------+---------------+
| ID | uid | clickdate | clickid |
+--------+-----------+----------------+---------------+
| 1 | 1 | 1452009600 | 1 |
| 2 | 1 | 1452009600 | 2 |
| 3 | 1 | 1452009600 | 3 |
| 4 | 1 | 1452096000 | 1 |
| 5 | 1 | 1452096000 | 2 |
+-----------------------------------------------------+
t1.clickdate
является GMT + 8 timestamp
, t1.clickid
= t2.id
Вторая таблица click_title
КАК t2
+---------+---------+--------------+-------------+------------+
| ID | title | url | status | other |
+---------+---------+--------------+-------------+------------+
| 1 | Helo | http://xxx | 1 | |
| 2 | World | http://www | 1 | |
| 3 | Good | http://ggg | 1 | |
| 4 | Morning | http://aaa | 2 | |
+-------------------------------------------------------------+
Мои кодирования определено:
$_G['timestamp'] = time(); //my server is GMT+8
$todaydate = date("Y-m-d",($_G['timestamp'])); //output 2016-01-07
$todaytimestamp = strtotime($todaydate); //output 1452096000
$_G['uid'] = intval($_GET['userid']); //this is user id
я запрос, как это:
$queryJN = DB::query("SELECT t1.*,t2.title,t2.url FROM ".DB::table('click_log')." t1 LEFT JOIN ".DB::table('click_title')." t2 ON (t1.clickid = t2.id) WHERE (how to write the codition?)");
while($rowJN = DB::fetch($queryJN)){
$jn_list[] = $rowJN;
}
Я пытаюсь что-то вроде:
$queryJNbux = DB::query("SELECT t1.*,t2.title,t2.url FROM ".DB::table('click_log')." t1 LEFT JOIN ".DB::table('click_title')." t2 ON (t1.clickid = t2.id) WHERE $_G[uid] IS NULL AND t2.id IS NULL AND t2.status = '1' AND t1.clickdate != '$todaydate'");
Но наклоняю работы, пусть покажет и url
потому t1.id 3
не существует в t1.clickid
когда t1.clickdate
является 1452096000
Для проблемы безопасности DB::query
не в состоянии сделать select * from
дважды в 1 запросе. Пожалуйста, помогите мне без select * from
два или более, спасибо.
Вчера весь день я думал о другом, после этого я пытаюсь использовать DB::fetch
, и он работает, но я не знаю, безопасно ли оно для запроса или может вызвать другую проблему или нет. Возможно, кто-то может улучшить этот запрос.
$queryJN = DB::query("SELECT * FROM ".DB::table('click_title')." WHERE status = '1'");
while($rowJN = DB::fetch($queryJN)){
$rowexisting = DB::query("SELECT * FROM ".DB::table('click_log')." WHERE uid = '$_G[uid]' AND clickid = '$rowJN[id]' AND clickdate = '$todaydate'");
if (mysql_num_rows($rowexisting) == '0'){
$jn_list[] = $rowJN;
};
}
Посмотрите на функции тузд 'NOT IN()' '$ – Matt
_G ['timstamp'] 'shoulnd't be' $ _G ['timestamp'] '? –
@Matt Привет, я попробую '$ queryJN = DB :: query (" SELECT t1. *, T2.title, t2.url FROM ".DB :: table ('click_log')." T1 LEFT JOIN ".DB: : table ('click_title'). "t2 ON (t1.clickid = t2.id) WHERE t1.clickdate! = '$ todaydate' AND t2.status = '1' AND '$ _G [uid]' NOT IN (t1 .uid) И t2.id NOT IN (t1.clickid) ");' но все же не могу работать :( @ AdamBieńkowski Я уже редактирую, спасибо. –