Я никак не могу понять, почему у меня такая бесконечная петля
Я знаю, что эвал опасен и зол, но мне нужно использовать это для этой ситуации. В принципе у меня есть две разные базы данных которые имеют одну и ту же структуру таблиц но с разными данными поэтому я использовал a для каждой из них
цикл для доступа к обеим базам данных и цикл while для отображения всех результатов баз данных, и я использовал eval, чтобы сделать переменные уникальными друг от друга. Кажется, все работает хорошо,
пока я не загружаю страницу, и нет никаких ошибок, но страница переходит в бесконечный цикл, и она просто продолжает генерировать значение первых строк, которое никогда не прогрессирует, показывая значение следующих строк, так как же я могу структурировать это лучше, чтобы я не оказался в бесконечном цикле?
Это мой код.
<?php $search_user_input='a'; $array_of_user_xs_database_name = array('agency_clients','agency_models'); $array_of_user_xs = array('client','model'); $iterator = new MultipleIterator(); $iterator->attachIterator(new ArrayIterator($array_of_user_xs_database_name)); $iterator->attachIterator(new ArrayIterator($array_of_user_xs)); foreach($iterator as $index => $value){ $user_xs_database_name= $value[0]; $user_x= $value[1]; $User_x= ucfirst($user_x); eval(' $db_servername_getSearched'.$User_x.'="localhost"; $db_username_getSearched'.$User_x.'="jd"; $db_password_getSearched'.$User_x.'="1234"; $db_name_getSearched'.$User_x.'= $user_xs_database_name; $db_connect_getSearched'.$User_x.'= new mysqli ($db_servername_getSearched'.$User_x.',$db_username_getSearched'.$User_x.',$db_password_getSearched'.$User_x.', $db_name_getSearched'.$User_x.'); $db_query_getSearched'.$User_x.'= "SELECT uid, photo, CONCAT(first_name, \' \', last_name) AS name, signature_name, phone_number, email FROM '.$user_x.'s WHERE CONCAT_WS(\' \','.$user_x.'s.first_name,'.$user_x.'s.last_name) LIKE \'%".$search_user_input."%\' OR signature_name LIKE \'%".$search_user_input."%\' OR phone_number LIKE \'%".$search_user_input."%\' OR email LIKE \'%".$search_user_input."%\'"; $db_result_getSearched'.$User_x.'= $db_connect_getSearched'.$User_x.'->query($db_query_getSearched'.$User_x.'); '); $mysqli_result= eval('return $db_result_getSearched'.$User_x.';'); if($mysqli_result-> num_rows >= 1){ $mysqli_row= eval('return $db_row_getSearched'.$User_x.'= $db_result_getSearched'.$User_x.'->fetch_assoc();'); while($mysqli_row){ ?> <h1> <?php $photos= eval('return $db_row_getSearched'.$User_x.'["photo"];'); echo $photos; ?> </h1> <?php } } } ?>
Что я уже пробовал:
Ходил на другие форумы задавать вопросы без хороших ответов и даже сделал поиск в Google.
Mohibur Rashid
Это абсолютный кошмар. Мой кошмар лучше, чем заявление об оценке, которое вы написали. Просто попробуйте представить себе 10 000 строк среднего веб-приложения.
И ваш цикл while не имеет стратегии выхода.
Member 13605567
Спасибо за ваш ответ Мохибур Рашид. Я не думаю, что вы понимаете, почему я хочу использовать eval для этого. Я использование eval, так что я могу иметь уникальные переменные, потому что позже вниз по дороге я хочу, чтобы вызвать определенную группу переменную например $db_row_getSearched'$.User_x.' на самом деле означает это $db_row_getSearchedClient или этот $db_row_getSearchedModel потому что если позже вниз по дороге я хочу позвонить $db_row_getSearchedClient['имя'];
CHill60
Mohibur не увидит вашего ответа - используйте ссылку "ответить" рядом с комментарием, чтобы уведомить участника, которому вы отвечаете.
Однако его точка зрения справедлива - у вас нет стратегии выхода из петли
Mohibur Rashid
https://stackoverflow.com/questions/4631246/risks-of-using-php-eval
прочтите эту тему о том, почему бы не использовать eval. Ваша проблема может быть решена с помощью альтернативной идеи. обдумайте свои идеи.
ZurdoDev
Или вы можете им это объяснить.