Запрос данных Mysql и вещь подлокотника с резким фунтом

У меня есть запрос mysql, который выглядит так: $query="SELECT * FROM #__content" . Я понятия не имею, что означает #__ перед содержимым? Если я создал статью X категории Y, то как я могу обратиться к таблице mysql, содержащей X в Joomla?

#__ является префиксом ваших таблиц

#__ – это просто префикс таблицы базы данных и определяется вами. #__

Если это не было определено, людям приходилось вручную вводить свои префиксы в каждое расширение, требующее доступа к базе данных, которое, как вы можете себе представить, было бы раздражать.

Например, если префикс таблицы базы данных j25 , то:

#__content = j25_content

Как говорили другие, хеш-строка подчеркивания «#_» – это префикс, используемый для имен таблиц по классу JDatabase от Joomla !. ( NB есть только одно подчеркивание, второе подчеркивание поддерживается для удобства чтения в именах таблиц).

Когда вы впервые настроите Joomla! вам предоставляется возможность установить префикс или использовать случайное сгенерированное во время. Вы можете прочитать о том, как проверить префикс здесь .

Когда вы обращаетесь к базе данных с использованием класса JDatabase, она предоставляет вам механизм абстракции, чтобы вы могли взаимодействовать с базой данных, которую использует Joomla, без необходимости специально кода для MySQL или MSSQL или PostgreSQL и т. Д.

Когда JDatabase готовит запрос перед его исполнением, он заменяет любые вхождения #_ в сегменте запроса с настройкой префикса, когда Joomla! был установлен. например

  // Get the global DB object. $db = JFactory::getDBO(); // Create a new query object. $query = $db->getQuery(true); // Select some fields $query->select('*'); // Set the from From segment $query->from('#__myComponents_Table'); 

Позже, когда вы выполняете запрос, JDatabase будет изменять сегмент SQL из

from #__myComponents_Table до

from jp25_myComponents_Table – если префикс jp25 , перед его исполнением.