WHERE
работает только в одном ряду. Таким образом, условие никогда не выполняется.
Я думаю, вы хотите:
SELECT post_id
FROM wp_postmeta
WHERE meta_key IN ('artikul', '_thumbnail_id')
GROUP BY post_id
HAVING COUNT(*) = 2;
Это возвращает сообщения, которые имеют два ключа. Это предполагает, что у вас нет повторяющихся значений ключей в сообщении. Если так, то используйте:
HAVING COUNT(DISTINCT meta_key) = 2
Примечание: ответ ниже не корректен, не используйте или голосуйте. Я оставил его здесь как место для обсуждения
Вы решение должно работать (не, что я когда-либо пробовал что-то как этот), за исключением того, что необходимо вручную закрыть предыдущий сеанс перед любым вызовом к session_name()
поскольку иначе это тихо перестанет работать.
Можно попробовать что-то вроде этого:
session_write_close();
$oldsession = session_name("MY_OTHER_APP_SESSION");
session_start();
$varIneed = $_SESSION['var-I-need'];
session_write_close();
session_name($oldsession);
session_start;
Нет никакой потребности на самом деле смешать со Значением идентификатора сессии, или через идентификационные стандартные программы управления сессией PHP или посредством ручного искажения cookie - PHP будет заботиться обо всем, что самом и Вы не должны смешивать с этим.
Руководство объясняет это вполне прилично, но здесь является некоторым примером из руководства
session_start();
$old_sessionid = session_id();
session_regenerate_id();
$new_sessionid = session_id();
echo "Old Session: $old_sessionid<br />";
echo "New Session: $new_sessionid<br />";
print_r($_SESSION);
Необходимо использовать session_id, можно использовать его для установки / получают идентификатор сессии (или имя).
Таким образом вместо того, чтобы использовать session_name (в Вашем псевдо коде), используйте session_id.
Zend_Session предлагает Пространство имен для сессий.
Экземпляры Zend_Session_Namespace являются объектами средства доступа для namespaced частей $ _SESSION. Компонент Zend_Session переносит существующее расширение/сессию PHP с интерфейсом администрирования и управления, а также обеспечение API для Zend_Session_Namespace для сохранения пространств имен сессии. Zend_Session_Namespace обеспечивает, стандартизированный, объектно-ориентированный интерфейс для работы с пространствами имен сохранил стандартный механизм сессии внутреннего PHP. Поддержка существует и для анонимного и для аутентифицируемого (например, "вход в систему") пространства имен сессии.
Это возможно. Но я думаю, что необходимо сделать сессию, обрабатывающую себя:
session_name('foo');
// start first session
session_start();
// …
// close first session
session_write_close();
session_name('bar');
// obtain session id for the second session
if (ini_get('session.use_cookies') && isset($_COOKIE[session_name()])) {
session_id($_COOKIE[session_naem()]);
} else if (ini_get('session.use_trans_sid') && !ini_get('session.use_only_cookies') && isset($_REQUEST[session_name()])) {
session_id($_REQUEST[session_naem()]);
}
// start second session
session_start();
// …
Но обратите внимание, что Вы могли бы сделать некоторые из других вещей обработки сессии как cookie, устанавливающий также. Я не знаю, делает ли PHP это в этом случае также.