Member 13267099 Ответов: 1

PDO возвращает один результат, как вернуть другую запись из 1 столбца нескольких строк


Я делаю пользовательскую карту сайта из своей базы данных и застрял со следующей проблемой

SQL-запрос:

SELECT term_id FROM wp_term_taxonomy WHERE taxonomy="product-cat" || taxonomy="product-brand"


Результат Запроса

=========
 term_id
=========
|  365   |
|  369   |
|  370   |


Он возвращает все term_id из моей базы данных, через которую я собираю слизни категорий из другой таблицы,чтобы сделать URL-адреса sitemap. Ниже приведен код, и он отлично работает, как вы можете видеть в (вывод sitemap), но, к сожалению, я можете извлекать следующие двигатели СМД-подряд & он показывает всегда одно и то же двигатели СМД - для меня в результате "тот же URL-адрес"

Мой Вывод Карты Сайта
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<url>
<loc>
http://domain.com/search-page/?product-cat=mobiles-tablets	365
</loc>
<changefreq>always</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>
http://domain.com/search-page/?product-cat=mobiles-tablets	365
</loc>
<changefreq>always</changefreq>
<priority>1.0</priority>
</url>
</urlset>


МОЙ КОД
<?php
header("Content-type: text/xml");
$i=0;
$xml = '<?xml version="1.0" encoding="UTF-8"?>';
$xml.= "\n".'<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
  $db = new PDO('mysql:host=xxx;dbname=xxx', 'xx', 'xxx');
  $stmt[$i] = $db->query('SELECT count(*) FROM wp_term_taxonomy WHERE taxonomy="product-cat" || taxonomy="product-brand"');
  $rowcount = $stmt[$i]->fetchColumn();
      for ($i=0; $i<2; $i++)
      {
        $sth[$i] = $db->query('SELECT term_id FROM wp_term_taxonomy WHERE taxonomy="product-cat" || taxonomy="product-brand"');
        $t_id[$i] = $sth[$i]->fetchColumn();
        $stmt[$i] = $db->query('SELECT taxonomy FROM wp_term_taxonomy WHERE term_id = '.$t_id[$i].'');
        $t_taxonomy[$i] = $stmt[$i]->fetchColumn();
        $stmt[$i] = $db->query('SELECT slug FROM wp_terms WHERE term_id = '.$t_id[$i].'');
        $t_slug[$i] = $stmt[$i]->fetchColumn();
      }
        echo $xml;
     for ($i=0; $i<2; $i++)
 
      {
 
        $xml.= "\n\t\t".'<url>'."\n";
        $xml.= "\t\t\t".'<loc>'."http://domain.com/search-page/?$t_taxonomy[$i]=$t_slug[$i]"."\t$t_id[$i]\t$i\t$rowcount".'</loc>';
        $xml.= "\n\t\t\t".'<changefreq>always</changefreq>';
        $xml.= "\n\t\t\t".'<priority>1.0</priority>';
        $xml.= "\n\t\t".'</url>'."\n";
      }
    ?>
 

<?php 
$xml.= "\n".'</urlset>';
$handle = fopen('sitemap_custom.xml','w+');
fwrite($handle,$xml);
fclose($handle);
?>  


Что я уже пробовал:

Что Мне Нужно?

Я хочу извлечь следующую строку term_id (идеально, если она основана на цикле[0,1,2]) прямо сейчас она показывает мне только результат term_id=365

Mohibur Rashid

Ваш алгоритм неправильный

$л = $дБ-&ГТ;запрос('двигатели СМД-выберите из wp_term_taxonomy, где таксономия="продукт-кошка" || таксономия="продукт-бренд"');
$t_id = $sth- & gt;fetchColumn();
$прибытие=[];
for ($i=0; $i< length($t_id); $i++) {
$параметр stmt = $дБ-и GT;выберите таксономии запросов (от wp_term_taxonomy, где двигатели СМД -='. $t_id[$я]".);
$t_taxonomy = $stmt- & gt;fetchColumn();
$параметр stmt = $дБ-и GT;выбрать пуля запросов (от wp_terms, где двигатели СМД -='. $t_id[$я]".);
$t_slug = $stmt- & gt;fetchColumn();
массив $arr[$я]["двигатели СМД -"]=t_id[$я];
$arr[$i] ["таксономия"]=$t_taxonomy[0];
$arr[$i] ["slug"]=$t_slug[0];
}

однако попробуйте выполнить следующий запрос

Выберите.двигатели СМД -, а.таксономия, б.пуля из wp_term_taxonomy соединения wp_terms B на(а.двигатели СМД - = б.двигатели СМД -) где таксономия="продукт-кошка" || таксономия="продукт-бренд"

Member 13267099

Фатальная ошибка: вызов функции-члена fetchColumn() на не-объекте в строке 15

Member 13267099

В дальнейшем,
Я использовал также

$СТГ[$я] = $дБ-&ГТ;подготовить("двигатели СМД-выберите из wp_term_taxonomy, где продукт-кот таксономии='продукт-бренд' || таксономия=''");
$sth[$i] - & gt;выполнить();
$result[$i] = $sth[$i]- & gt;fetchAll();
print_r($результат[$я])

и это возвращает мне вывод:

Массив
(
[0] => массив
(
[term_id] = & gt; 365
[0] = & gt; 365
)

[1] => массив
(
[term_id] => 369
[0] => 369
)
}

но я не могу извлечь term_id из каждого массива

Mohibur Rashid

может быть вам нужно изучить PHP массив firt

1 Ответов

Рейтинг:
10

Kornfeld Eliyahu Peter

Цитата:
PDOStatement:: fetchColumn-возвращает один столбец из следующей строки результирующего набора
Таким образом, вы должны переместить свой fetchColumn внутри цикла по строкам...