Вы также можете использовать NOT EXISTS
:
SELECT t.*
FROM temp t
WHERE NOT EXISTS (SELECT 1 FROM temp2 t2 WHERE t2.a = t.a);
Текущий рабочий каталог для PHP является каталогом, в котором расположен названный файл сценария. Если Ваши файлы были похожи на это:
/A
foo.php
tar.php
B/
bar.php
Если Вы называете foo.php (исключая: http://example.com/foo.php), рабочий каталог будет/A/. Если Вы называете bar.php (исключая: http://example.com/B/bar.php), рабочий каталог будет/A/B/.
Существует то, где это становится хитрым. Давайте скажем, что foo.php - такой:
<?php
require_once( 'B/bar.php' );
?>
И bar.php:
<?php
require_once( 'tar.php');
?>
Если мы назовем foo.php, то bar.php успешно назовет tar.php, потому что tar.php и foo.php находятся в том же каталоге, который, оказывается, рабочий каталог. Если Вы вместо этого назовете bar.php, то он перестанет работать.
Обычно Вы будете видеть любого во всех файлах:
require_once( realpath( dirname( __FILE__ ) ).'/../../path/to/file.php' );
или с файлом конфигурации:
// config file
define( "APP_ROOT", realpath( dirname( __FILE__ ) ).'/' );
с остальной частью использования файлов:
require_once( APP_ROOT.'../../path/to/file.php' );
Мне нравится делать это:
require_once(dirname(__FILE__)."/../_include/header.inc");
Тем путем Ваши пути могут всегда быть относительно текущего расположения файла.
Я использую dirname(
вещь как bobwienholt больше всего время, но что это могло заплатить, чтобы сделать, имеют основную точку входа, которая загружает весь Ваш другой код, который определяет постоянный refereing к корню проекта, т.е.__FILE__
)
define("ROOT",dirname(__FILE__).'/' );
и затем позже все, что необходимо знать, - то, где путь относительно корня, т.е.:
require(ROOT . "/lib/tool/error.php");
cd foo
php bar/baz.php
-> some error saying it cant find the file
cd bar
php baz.php
-> suddenly working.
Если Вы используете ".. /" нотация, это берет полное незнание PHP, Включают Путь, И ТОЛЬКО рассматривает, где человек, кого выполняет его.
Я включаю этот код наверху каждой страницы:
//get basic page variables
$self=$_SERVER['PHP_SELF'];
$thispath=dirname($_SERVER['PHP_SELF']);
$sitebasepath=$_SERVER['DOCUMENT_ROOT'];
//include the global settings, variables and includes
include_once("$sitebasepath/globals/global.include.php");
Включайте и потребуйте оба, берут или относительный путь или весь внедренный путь. Я предпочитаю работать с полным путем и делаю все свои ссылки как включать оператор выше. Это позволяет мне вводить общий переменный $sitebasepath, который обрабатывает учетную запись определенная информация, которая может измениться с машины на машину и затем просто ввести путь от webroot, т.е./globals/whatever_file.php
Я также использую переменную $self в формах, которые могут назвать себя для обработки ввода данных.
Надежда, которая помогает.
Если у Вас есть достаточные права доступа, попытайтесь изменить PHP's include_path
установка для целого сайта. Если Вы не можете сделать этого, необходимо будет или направить каждый запрос через тот же Сценарий PHP (например, Apache использования mod_rewrite), или необходимо будет использовать сценарий "инициализации", который настраивает include_path:
$includeDir = realpath(dirname(__FILE__) . '/include');
ini_set('include_path', $includeDir . PATH_SEPARATOR . ini_get('include_path'));
После того, как тот файл включен, используйте пути относительно включать каталога:
require_once '../init.php'; // The init-script
require_once 'MyFile.php'; // Includes /include/MyFile.php
Путь файла PHP, который требуют в оригинале, ДОБИРАЕТСЯ, или POST является по существу 'рабочим каталогом' того сценария. Любые "включенные" или "необходимые" сценарии наследуют это как свой рабочий каталог также.
Я буду или использовать полные пути в, требуют операторов или изменяют include_path PHP для включения любого пути в мое приложение, которое я могу хотеть использовать для сохранения меня дополнительный ввод. Вы найдете это в php.ini.
include_path = ".:/list/of/paths/:/another/path/:/and/another/one"
Я не знаю, выручит ли это Вас в этом конкретном экземпляре, но волшебных константах как ФАЙЛ, и DIR может пригодиться, если когда-либо необходимо знать путь, конкретный файл работает в.
http://us2.php.net/manual/en/language.constants.predefined.php
Единственное место, от которого я видел путь, оцененный, является файлом, который Вы в настоящее время редактируете. У меня никогда не было проблем с ним, но если Вы, Вы могли бы хотеть предоставить больше информации (версия PHP, ОС, и т.д.).
С тех пор требуют, и require_once очень похожи для включения и include_once, вся документация отправляется под "включать" областью документа функций на php.net От той страницы
Файлы для включения сначала разыскиваются в каждой include_path записи относительно текущего рабочего каталога, и затем в каталоге текущего сценария. Например, если Ваш include_path является библиотеками, текущий рабочий каталог является/www/, Вы включали include/a.php и существует, включают "b.php" в тот файл, b.php сначала смотрят в/www/libraries/и затем в/www/include/. Если имя файла начинается с./или../, это смотрят только в текущем рабочем каталоге.
Далее, можно найти, что весь ток включает пути путем выполнения "php-i" из командной строки. Можно отредактировать включать путь в файле php.ini, и также через ini_set (). Можно также выполнить php_info () функция на странице для получения распечатки огибающего Вара, если CLI неудобен.
Смотрите на функцию getcwd. http://us2.php.net/getcwd