В двух выборках из таблиц по 500 объектов через цикл определяю нужные для обновления. По отдельности всё получает, а вот вложенный цикл останавливается после первого прохода. Может ли это быть связано с mysql_fetch_assoc или что-то не так с кодом или количеством проходов (250000 выходит и много ли это)?
$result = mysql_query("select * FROM pages_router WHERE id_site = 23");
$resultMeta = mysql_query("select * FROM pages_meta");
$out = '';
while( $row = mysql_fetch_assoc($result)) {
$id = $row['id'];
$link1 = $row['link1'];
$out .= $id." - ";
if (in_array('itemView', explode('/', $link1))) {
$link2 = $row['link2'];
while( $rowMeta = mysql_fetch_assoc($resultMeta)) {
$linkMeta = $rowMeta['name'];
$out .= $linkMeta."<br>";
// if($link2 == $rowMeta['name']) {
if(!strcmp($link2, $linkMeta)) {
$idMeta = $rowMeta['id'];
// print $idMeta."<br>";
// $query = "update pages_meta_edit_empty set title='', descr='', keyw='', title_ru='', descr_ru='', keyw_ru='' where id='$idMeta'";
// print $query.'<br>';
// mysql_query($query);
}
}
}
}
echo $out;
Я понимаю что можно сделать через объединение таблиц и это правильно и я так и сделал.
$result = mysql_query("select title, descr, keyw, title_ru, descr_ru, keyw_ru, link1, a.id id FROM pages_meta a INNER JOIN pages_router b ON a.name = b.link2 WHERE b.id_site = 23");
while( $row = mysql_fetch_assoc($result)) {
$id = $row['id'];
$link1 = $row['link1'];
if (in_array('itemView', explode('/', $link1))) {
// print $id." - $link1<br>";
$query = "update pages_meta set title='', descr='', keyw='', title_ru='', descr_ru='', keyw_ru='' where id='$id'";
mysql_query($query);
}
}
Только не понял почему это не сработало в первом коде?
ifи до второгоwhileи смотреть, что в массивах, что в каждой переменной и явно самому выявить проблему – Алексей Шиманский Jan 21 '21 at 12:31