Спасибо @ sticky-bit, ваше решение сработало, я просто ссылался на неправильный столбец в сравнении.
Окончательный запрос
SELECT ct.id,
ct.obj_id
FROM comment_thread ct
LEFT JOIN (SELECT cc.thread_id,
count(*) count
FROM comment_comment cc
GROUP BY cc.thread_id) x
ON x.thread_id = ct.id
ORDER BY x.count DESC
NULLS LAST;
Возможно, самый простой способ заставить PHP выполнять POST-запрос - это использовать cURL либо в качестве расширения , либо просто передать его другому процессу. Вот пример сообщения:
// where are we posting to?
$url = 'http://foo.com/script.php';
// what post fields?
$fields = array(
'field1' => $field1,
'field2' => $field2,
);
// build the urlencoded data
$postvars = http_build_query($fields);
// open connection
$ch = curl_init();
// set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $postvars);
// execute post
$result = curl_exec($ch);
// close connection
curl_close($ch);
Также ознакомьтесь с набором классов Zend_Http в платформе Zend, который предоставляет довольно функциональный HTTP-клиент, написанный непосредственно на PHP (расширения не требуются).
2014 EDIT ] - ну, я давно это не писал. В наши дни стоит проверить Guzzle , который снова может работать с расширением curl или без него.
index.php
$url = 'http://[host]/test.php';
$json = json_encode(['name' => 'Jhonn', 'phone' => '128000000000']);
$options = ['http' => [
'method' => 'POST',
'header' => 'Content-type:application/json',
'content' => $json
]];
$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);
test.php
$raw = file_get_contents('php://input');
$data = json_decode($raw, true);
echo $data['name']; // Jhonn
Для обработки PHP загляните в cURL . Это позволит вам вызывать страницы на вашем сервере и извлекать из него данные. Обычно вы должны сделать что-то вроде этого:
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_URL,$fetch_url);
curl_setopt ($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt ($ch,CURLOPT_USERAGENT, $user_agent;
curl_setopt ($ch,CURLOPT_CONNECTTIMEOUT,60);
$response = curl_exec ( $ch );
curl_close($ch);
Вы также можете изучить PHP HTTP Extension .
Как и другие пользователи, проще всего сделать это с помощью CURL.
Если curl для вас недоступен, возможно http://netevil.org/blog/2006/nov/http-post-from-php-without-curl
Если это невозможно, вы можете сами написать сокеты http://petewarden.typepad.com/searchbrowser/2008/06/how-to-post-an.html
Предполагая, что ваша установка php имеет расширение CURL, это, вероятно, самый простой способ (и наиболее полный, если хотите).
Образец фрагмента:
//set POST variables
$url = 'http://domain.com/get-post.php';
$fields = array(
'lname'=>urlencode($last_name),
'fname'=>urlencode($first_name),
'email'=>urlencode($email)
);
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string,'&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
Кредиты идут на http://php.dzone.com . Также не забудьте посетить соответствующие страницы в Руководстве по PHP
Метод CURL очень популярен, так что да, его можно использовать. Вы также можете подробнее объяснить эти коды с некоторыми дополнительными комментариями, потому что начинающие могут их понять.