Я пытаюсь выполнить сравнение между двумя таблицами. Если я найду совпадение, мне нужно скопировать данные из одной таблицы и вставить ее в другую. Я могу просто извлечь данные из таблиц, но у меня проблемы с вложенным циклом, который я создал. Он только проходит и находит один результат. Когда вы просматриваете таблицы, есть 1000 матчей, поэтому я предполагаю, что я делаю что-то неправильно. Мое единственное предположение – использование fetch_object и то, как я его использую. Вместо этого я попытался использовать fetch_assoc, но получаю тот же результат:
$mysqli = mysqli_connect("127.0.0.1", "uname", "pword") or die("Can't connect to databse!"); mysqli_select_db($mysqli, "db_name") or die("Couldn't Select Database!"); $result = $mysqli->query('SELECT * FROM table_1'); $title = $mysqli->query('SELECT title FROM table_2'); if($result && $title){ while($t_row = $title->fetch_object()){ while($row = $result->fetch_object()){ $s_title = strtolower($t_row->title); $m_title = strtolower($row->description); if($s_title == $m_title) { echo "Matched: $s_title <strong>with</strong> $m_title<br />"; break; } } } }
Вы должны сохранить результаты второго цикла в var. Потому что после первого взгляда ваш второй курсор находится в конце результата.
if($result && $title){ $resulted_rows = array(); while($row = $result->fetch_object()){ $resulted_rows[] = strtolower($row->description); } while($t_row = $title->fetch_object()){ $s_title = strtolower($t_row->title); if(in_array($s_title, $resulted_rows)) { echo "Matched: $s_title" . PHP_EOL; } } }