Я работаю над модулем magento admin, и в настоящее время я выполняю запрос базы данных небрежно, непосредственно загружая php-файл и подключаясь к файлу php вне модуля:Выполнение sql-запроса непосредственно с контроллера
<?php
header("Content-type: text/xml");
$host = "localhost";
$user = "root";
$pw = "foo";
$database = "db";
$link = mysql_connect($host,$user,$pw) or die ("Could not connect.");
$db_selected = mysql_select_db($database, $link); if (!$db_selected) {
die ('Can\'t use ' . $database . ' : ' . mysql_error()); }
// connect to database
$link = mysql_connect($host . ":" . $port,$user,$pw) or die ("Could not connect.");
// Select DB
$db_selected = mysql_select_db($database, $link); if (!$db_selected) {
die ('Can\'t use ' . $database . ' : ' . mysql_error()); }
// Database query
$query = ("SELECT cpsl.parent_id AS 'foo'
, cpe.type_id AS 'bar'
, LEFT(cpe.sku, 10) AS 'color'
....
GROUP BY 1,2,3,4,5,6,7,8,9
ORDER BY 1,2,3,4,5,6,7,8,9
;");
// Execute query
$result = mysql_query($query, $link) or die("Could not complete database query");
// Populate array
while(($resultArray[] = mysql_fetch_assoc($result)) || array_pop($resultArray));
$doc = new DOMDocument();
$doc->formatOutput = true;
$r = $doc->createElement("DATA");
$doc->appendChild($r);
foreach($resultArray as $product)
{
$b = $doc->createElement("ITEM");
// MagentoID
$magento_id = $doc->createElement("MAGENTO_ID");
$magento_id->appendChild(
$doc->createTextNode($product['MagentoID'])
);
$b->appendChild($magento_id);
....
}
// Save XML
echo $doc->saveXML();
// Close connection
mysql_close($link);
?>
Может кто-нибудь объяснить, как лучше написать это в модуле? Я знаю, что могу сделать соединение намного проще (более безопасным?), Используя методы magentos. Могу ли я поставить весь этот запрос непосредственно в контроллер для модуля? Что-то вроде этого? :
public function queryAction()
{
$readConnection = $resource->getConnection('core_read');
$query = ("SELECT cpsl.parent_id AS 'foo'
...
}
В вашей строке «Тип заполнения» это выглядит так: '$ resultArray' должно быть пустым, потому что каждая запись удаляется. Это действительно работает? – clockworkgeek
Это действительно работает. Я просто хочу переместить его из этого php-файла и в пурпурный. Я вижу от wierdos ответ, что я на правильном пути, но я до сих пор не понимаю, как я тогда называю это, когда он находится в контроллере. – Zac