1

ポートフォリオのカスタムページタイトルを表示するスニペットを作成しようとしています。私が抱えている問題は、コードが「else」のみを返すことですが、MySqlでクエリを実行すると、が返されますname

私は何が間違っているのですか?

<?php
// Show All Errors
error_reporting(E_ALL);
ini_set('display_errors', '1');

$getID = $modx->quote($getID);

$ret = '';
$qry = "SELECT `name` FROM `modx_gallery_items` WHERE REPLACE(LOWER(`name`), ' ', '-') = $getID;";

$result = $modx->query($qry);
if ($result) {
    $row = $result->fetch(PDO::FETCH_ASSOC);
    if($row){
        $ret = 'o7th Web Design &raquo; Portfolio &raquo; ' . $row['name'];
    }else{ //It's showing this one on the page, yet the same query in MySQL returns `name`
        $ret = 'o7th Web Design &raquo; Portfolio &raquo; Our Portfolio' . $qry;
    }
    unset($row);        
}else{
    $ret = 'o7th Web Design &raquo; Portfolio &raquo; Our Portfolio' . $qry;
}

// Return everything
echo $ret;
?>
4

3 に答える 3

2

問題が見つかりました。

$row = $result->fetch(PDO::FETCH_ASSOC);

次のように変更する必要があります。

$row = $result->fetchAll(PDO::FETCH_ASSOC);

次に、返された配列をループするか、インデックスでアイテムを返すことができます。$row[0]['name']

于 2013-01-02T15:45:55.963 に答える
0

あなたは絶対にmodx革命でクエリを作成する方法を知りません。http://bobsguides.com/revolution-objects.htmlをお読みください。このコードの正しい例は次のようになります-

// add class to work with gallery extra
$gallery = $modx->getService('gallery','Gallery',$modx->getOption('gallery.core_path',null,$modx->getOption('core_path').'components/gallery/').'model/gallery/',$scriptProperties);
if (!($gallery instanceof Gallery)) return '';

// get id of album
$getID = (int) $modx->getOption('getID',$scriptProperties,false);
if (empty($getID)) return 'no id';

// make query
$c = $modx->newQuery('galAlbum')
$c->where(array(
    'id' => $getID,
));
$item = $modx->getObject('galAlbum',$c);

// get result
if (!empty($item)) {
    $output = 'o7th Web Design &raquo; Portfolio &raquo; ' . $item->get('name');
}
else {
    $output = 'o7th Web Design &raquo; Portfolio &raquo; Our Portfolio' . ' empty';
}

return $output;
于 2013-01-02T14:52:33.887 に答える
-1

これは問題ですか?

$qry = "SELECT `name` FROM `modx_gallery_items` WHERE REPLACE(LOWER(`name`), ' ', '-') = $getID;";

する必要があります:

$qry = "SELECT `name` FROM `modx_gallery_items` WHERE REPLACE(LOWER(`name`), ' ', '-') = ".$getID.";";

クエリが実際の値ではなく「$getID」を検索しているように見えます

于 2013-01-02T14:44:48.337 に答える