う~ん、見たことないかも...
スニペット内でDBAPIを利用して『データベースのテーブルからデータを抽出』したいのですが、
利用方法についての日本語解説等はありますでしょうか??
スニペットの中では [*pagetitle*] とかは使えないんですよ。
select * from テーブル名 where ○○ = ’[*pagetitle*]’"
スニペットへの引数として、例えば &data=`[*pagetitle*]` とかで外部から渡すか、ご提案いただいた上記の方法を試してみたいのですが、
MODx API の getDocumentObject で取得するかしないと
あっ、いや、私も素人みたいなものなんで...
ご提案いただいた上記の方法を試してみたいのですが、
具体的な方法ってご教授いただけますかっ?
select * from テーブル名 where ○○ = ’[*pagetitle*]’"『where』以降の記述をどうして良いものか悩んでいます。。
どちらも動作すると思いますが、基本的にはMODxのDBAPIを使う前者(赤字の方)を使う方のが良いのでは?
どちらのアプローチが良いのかも分からないのですが、
ソース自体も理解しやすそうなので、コチラで進めて行きたいと思います。
どちらも動作すると思いますが、基本的にはMODxのDBAPIを使う前者(赤字の方)を使う方のが良いのでは?
データテーブルについては、新規でデータテーブルを作成しました。
テーブル名については特定されていませんが、これは独自のテーブルでしょうか? それともMODxの既存のテーブルでしょうか?
MODxが使っているデータベースの中に、新しくテーブル(仮にテーブル名を MyTable としましょう)を作成されたんですね?
データテーブルについては、新規でデータテーブルを作成しました。
[!SomeSnippet? &targetTitle=`[*pagetitle*]`!]
$result = $modx->db->query(”SELECT * FROM `MyTable` WHERE hoge='$targetTitle'”);
大筋あっていると思いますが、データベースに使う値はescapeした方が良いですね。
$result = $modx->db->query(”SELECT * FROM `MyTable` WHERE hoge='$targetTitle'”);
$targetTitle = $modx->db->escape($targetTitle); $result = $modx->db->query(”SELECT * FROM `MyTable` WHERE hoge='$targetTitle'”);
$targetTitle = $modx->documentObject['pagetitle']; // pagetitleの取得 $targetTitle = $modx->db->escape($targetTitle); // 特殊文字のエスケープ $result = $modx->db->query("SELECT * FROM `MyTable` WHERE hoge='$targetTitle'");
$targetTitle = $modx->documentObject['pagetitle']; // pagetitleの取得 $targetTitle = $modx->db->escape($targetTitle); // 特殊文字のエスケープ $result = $modx->db->select("*", "`MyTable`", "hoge='$targetTitle'");