ошибка при вводе ссылки с параметрами [дубликат]

Я бы использовал это:

select t.*
from test as t
join
   (select max(rev) as rev
    from test
    group by id) as o
on o.rev = t.rev

Подзапрос SELECT не слишком эффективен, но в предложении JOIN кажется полезным. Я не эксперт в оптимизации запросов, но я пробовал в MySQL, PostgreSQL, FireBird, и он работает очень хорошо.

Вы можете использовать эту схему в нескольких соединениях и с предложением WHERE. Это мой рабочий пример (решение идентично вашей задаче с таблицей «твердое»):

select *
from platnosci as p
join firmy as f
on p.id_rel_firmy = f.id_rel
join (select max(id_obj) as id_obj
      from firmy
      group by id_rel) as o
on o.id_obj = f.id_obj and p.od > '2014-03-01'

Его спрашивают на таблицах с подростками таких записей записей, и он занимает менее 0,01 секунды на самом деле не слишком сильная машина.

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

12
задан sol 8 April 2011 в 18:10
поделиться

7 ответов

Вы можете использовать parse_url ();

$url = 'http://www.mydomain.com/abc/';

print_r(parse_url($url));

echo parse_url($url, PHP_URL_PATH);

, который даст вам

Array
(
    [scheme] => http
    [host] => www.mydomain.com
    [path] => /abc/
)
/abc/

Update: чтобы получить текущий URL-адрес страницы, а затем проанализировать его:

function curPageURL() {
 $pageURL = 'http';
 if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
 $pageURL .= "://";
 if ($_SERVER["SERVER_PORT"] != "80") {
  $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
 } else {
  $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
 }
 return $pageURL;
}

print_r(parse_url(curPageURL()));

echo parse_url($url, PHP_URL_PATH);

источник для функции curPageURL

36
ответ дан kjy112 5 September 2018 в 09:04
поделиться
9
ответ дан AgentConundrum 5 September 2018 в 09:04
поделиться

Чтобы получить текущий URL-адрес, вы можете использовать что-то вроде $url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];

. Если вы хотите точно сопоставить то, что находится между первым и вторым / пути, попробуйте использовать напрямую $_SERVER['REQUEST_URI']:

<?php

function match_uri($str)
{
  preg_match('|^/([^/]+)|', $str, $matches);

  if (!isset($matches[1]))
    return false;

  return $matches[1];  
}

echo match_uri($_SERVER['REQUEST_URI']);

Просто для удовольствия версия с strpos() + substr() вместо preg_match(), которая должна быть на несколько микросекунд быстрее:

function match_uri($str)
{
  if ($str{0} != '/')
    return false;

  $second_slash_pos = strpos($str, '/', 1);

  if ($second_slash_pos !== false)
    return substr($str, 1, $second_slash_pos-1);
  else
    return substr($str, 1);
}

HTH

4
ответ дан Frosty Z 5 September 2018 в 09:04
поделиться
<?function urlSegment($i = NULL) {
static $uri;
if ( NULL === $uri )
{
    $uri = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH );
    $uri = explode( '/', $uri );
    $uri = array_filter( $uri );
    $uri = array_values( $uri );
}
if ( NULL === $i )
{
    return '/' . implode( '/', $uri );
}
$i =  ( int ) $i - 1;
$uri = str_replace('%20', ' ', $uri);
return isset( $uri[$i] ) ? $uri[$i] : NULL;} ?>

адрес образца в браузере: http: // localhost / this / is / a / sample url

<?  urlSegment(1); //this
urlSegment(4); //sample url?>
0
ответ дан sarah 5 September 2018 в 09:04
поделиться

Проверьте встроенную функцию PHP parse_url . Это должно делать то, что вы ищете.

6
ответ дан shA.t 5 September 2018 в 09:04
поделиться
$url = 'http://www.mydomain.in/abc/';

print_r(parse_url($url));

echo parse_url($url, PHP_URL_host);
1
ответ дан tom redfern 5 September 2018 в 09:04
поделиться
<?php
$url = "http://www.mydomain.com/abc/"; //https://www... http://... https://...
echo substr(parse_url($url)['path'],1,-1); //return abc
?>
0
ответ дан Trung Lương 5 September 2018 в 09:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: