2014-05-30 1 views
-1

Я создаю веб-сайт, который получает события и все другие связанные с событиями данные из Facebook через FQL-запрос Facebook. Все работало нормально, пока я не хотел получить всю запрошенную информацию в моей базе данных. Некоторые события записываются в базу данных, а некоторые - нет.Невозможно получить данные запроса fql в моей базе данных

Вот пример страницы, на которой я поставил два запроса FQL, которые будут отображаться также на странице (это значит, что запрос успешный), и они также будут вставлены в базу данных, но только одна из них будет записана. Место, названное HETK, записано, но Muusika Lounge - нет. Here's an example page.

Моя вторая проблема заключается в том, что записанные события не записываются с сегодняшней даты. Все начинается с завтрашнего дня. (Это можно увидеть на картинке)

Код getTallinn1.php:

$today = date("Y-m-d"); 

$now= $today ;   

$Muusikalounge = array(
'method' => 'fql.query', 
'query'  => "SELECT name, start_time,description, location,attending_count,venue,pic_cover,eid 
     FROM event WHERE eid IN (SELECT eid FROM event_member WHERE uid = 450415438376448 AND  start_time >= '$now' ) 
     ORDER BY start_time asc LIMIT 0, 3",); 
$Result = $facebook->api($Muusikalounge); 
foreach ($Result as $rows) { 
mysqli_query($con, "REPLACE INTO tallinn (name, start_time, description, location,  attending_count, venue, pic_cover, eid) VALUES ('".$rows['name']."', '".$rows['start_time']."',  '".$rows['description']."', '".$rows['location']."', '".$rows['attending_count']."', '".$rows['venue']."', '".$rows ['pic_cover']['source']."', '".$rows['eid']."')"); 
}    


$hetk = array(
'method' => 'fql.query', 
'query'  => "SELECT name, start_time,description, location,attending_count,venue,pic_cover,eid 
      FROM event WHERE eid IN (SELECT eid FROM event_member WHERE uid = 282875915182473 AND  start_time >= '$now' ) 
      ORDER BY start_time asc LIMIT 0, 3",);  

$Result1 = $facebook->api($hetk); 
foreach ($Result1 as $rows1) { 
    mysqli_query($con, "REPLACE INTO tallinn (name, start_time, description, location,  attending_count, venue, pic_cover, eid) VALUES ('".$rows1['name']."', '".$rows1['start_time']."',  '".$rows1['description']."', '".$rows1['location']."', '".$rows1['attending_count']."',  '".$rows1['venue']."', '".$rows1 ['pic_cover']['source']."', '".$rows1['eid']."')"); 
}  

Вот записанные данные в PHPMyAdmin:

database http://t2na.ee/database.jpg

Запросы идентичны. Я не знаю, что может быть причиной здесь.

UPDATE

Я нашел ключ к этой проблеме. Оставляем Описание Вставка в базу данных устраняет проблему. Теперь все работает так, как ожидалось. Но я не могу понять, в чем разница между некоторыми строками описания событий, вызывающими этот конфликт здесь. Строки описания, взятые из событий, различаются только по их длине, но длина здесь тоже не является проблемой. Я изменил тип описания на LongText, все еще ту же проблему.

+0

Вы пренебрегаете тем, чтобы избежать/обрабатывать данные, которые вы ввели в запросы правильно. Пойдите, прочитайте по теме SQL Injection. – CBroe

ответ

0

Для получения даты используйте функцию FQL now() вместо вашей собственной строки даты. Facebook предполагает часовой пояс America/Los_Angeles, если он не указан, поэтому ваш $now может быть интерпретирован как завтра FQL.

Для данных, не связанных с записью, что произойдет, если вы закомментируете mysqli_query для $hetk? Мне интересно, как два запроса переписывают друг друга в вашей базе данных.

Наконец, при наступлении заката FQL вы должны писать новые вызовы API Facebook, используя чистый API-интерфейс Graph.

+0

Я попробовал функцию now(), но все тот же результат. Это не имело бы смысла, потому что на странице он повторяет и сегодняшние события. Я также пробовал комментировать mysqli_query за $ hetk, тогда ничего не было записано в базе данных. Но будет ли FQL закрыт навсегда? График API не имеет почти таких же преимуществ, как FQL, они не могут просто закрыть его, не так ли? – mehis

+0

Хммм. Тогда что-то не так с вашими запросами mysqli. Facebook может и закрыл много вещей. Начиная с f8, Facebook, по крайней мере, обещает быть приятным в этом, а не просто «исчезает» с конечной точкой, как это было в прошлом. Официальное уведомление находится здесь: https://developers.facebook.com/docs/apps/changelog/#v2_0_fql – cpilko

+0

Ошибка запроса может быть проблемой с несоответствующей ценой. Поскольку ваш запрос представляет собой строку с двойными кавычками, вы можете использовать [фигурный синтаксис] (http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing.комплекс) для ваших переменных: 'VALUES ('{$ rows [' name ']}', '{$ rows [' start_time ']}', ...'. Еще лучше ['sprintf()'] (http://www.php.net/manual/en/function.sprintf.php) – cpilko