私はmagento管理モジュールで作業していますが、現在、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'
...
}
"Populate array"行では、すべてのレコードがポップされるので、 '$ resultArray'のように見えます。これは実際には機能しますか? – clockworkgeek
実際に動作します。私はちょうどこのphpファイルからmagentoに移動したいと思います。私はwierdosから私は正しい軌道にある答えを参照してくださいしかし、私はまだそれがコントローラになったら、それを呼び出す方法を理解していない。 – Zac