1. Гость, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

MYSQL дамп массива и пхп - сломал мозг )

Тема в разделе 'PHP', создана пользователем wsok, 31 янв 2015.

  1. TopicStarter Overlay

    wsok Программист Пользователи

    Сообщения:
    606
    Лайки:
    173
    Пол:
    Мужской
    Репутация:
    3
    В общем для своей тривиальной задачи я должен получить данные из мускула именно в в визуальном представлении, в виде дампа, который в последствии мне нужно разобрать уже при помощи пхп в привычный вывод.

    Код:
    while( $row = mysqli_fetch_array($result, MYSQL_ASSOC) ){
    var_export ($row);
    }
    такая конструкция соответственно выводит дамп визуально:
    примерно такого вида...

    Код:
    array( 'ID'=>'32', 'name'=>'root', 'email'=>'[email protected]', 'creatime'=>'2014-09-0918:55:49', )
    array( 'ID'=>'48', 'name'=>'wsok', 'email'=>'[email protected]', 'creatime'=>'2014-09-2007:20:51', )
    array( 'ID'=>'64', 'name'=>'userpw', 'email'=>'[email protected]', 'creatime'=>'2014-09-2301:25:13', )
    задача, уже при помощи пхп все это многомерное безобразие обработать неким аналогом функции от мускула mysqli_fetch_array,привычным способом, будто я это делаю в мускуле.
    Код:
    while( $row = php_fetch_array($result) ){
    echo $row['name']."данные привычным методом"
    }
    т.е. я так понимаю придется написать именно в пхп аналог, но не понимаю куда копать, с чего начать разбирать полученные данные из var_export
  2. TopicStarter Overlay

    wsok Программист Пользователи

    Сообщения:
    606
    Лайки:
    173
    Пол:
    Мужской
    Репутация:
    3
    если быть точным, то как из полученного дампа построить двухмерный массив, а то что то пока не даже гугл не помог )
  3. vieraw Пользователи

    Сообщения:
    54
    Лайки:
    27
    Репутация:
    0
    Это сделать так нельзя?
    PHP:

    $result 
    = [];
    while( 
    $row mysqli_fetch_array($resultMYSQL_ASSOC) ){
    $result[] = $row;
    var_export ($row);
    }
  4. alexdnepro Эксперт AngeliCore Пользователи Open Source Contributor White List

    Сообщения:
    753
    Лайки:
    1.311
    Пол:
    Мужской
    Репутация:
    6
    PHP:
    $my_array = array();
    while (
    $row mysqli_fetch_assoc($result) {
      
    array_push($my_array$row);
    }
    foreach (
    $my_array as $i => $row){
      echo 
    $row['name'];
    }
    wsok нравится это.
  5. TopicStarter Overlay

    wsok Программист Пользователи

    Сообщения:
    606
    Лайки:
    173
    Пол:
    Мужской
    Репутация:
    3
    Вся сложность в том, что нужно получить массив данных визуально и передать в скрипт на другом сервере, т.е. API система, а для этого содержание массива нужно передать визуально и уже потом разобрать пхп скриптом.
    --- добавлено: 31 янв 2015 в 22:18 ---
    Осталось понять теперь, удастся ли мне содержание массива передать в скрипт на другом сервере и уже там вывести данные в привычном виде в браузер )
    Последнее редактирование модератором: 8 фев 2015
  6. vieraw Пользователи

    Сообщения:
    54
    Лайки:
    27
    Репутация:
    0
    Мб. слышал про JSON?
    PHP:
    while( $row mysqli_fetch_array($resultMYSQL_ASSOC) ){
    $result[] = $row;
    }
    echo 
    json_encode($result);
    В скрипте где необходимо преобразовать в массив:
    PHP:
    json_decode($resulttrue);
    result - название переменной содержащей строку.
  7. TopicStarter Overlay

    wsok Программист Пользователи

    Сообщения:
    606
    Лайки:
    173
    Пол:
    Мужской
    Репутация:
    3
    Возможно ты меня не понял, я пишу API, где окружение переменных нельзя передать в другой скрипт, который принимает данные на другом сервере через CURL
  8. alexdnepro Эксперт AngeliCore Пользователи Open Source Contributor White List

    Сообщения:
    753
    Лайки:
    1.311
    Пол:
    Мужской
    Репутация:
    6
    возможно подойдет вариант serialize, он пакует в строку все типы, включая объекты, которые спокойно можно передать через curl методом post, хотя json_encode для этих целей тоже вполне сгодится.
  9. vieraw Пользователи

    Сообщения:
    54
    Лайки:
    27
    Репутация:
    0
    Это ты меня не понял. Первый скрипт выводит json строку, второй ее получает и обрабатывает.
    Первый скрип:
    PHP:
    while( $row mysqli_fetch_array($resultMYSQL_ASSOC) ){
    $result[] = $row;
    }
    echo 
    json_encode($result);
    Второй скрипт (грубый пример):
    PHP:

    $result 
    file_get_contents('адрес до первого скрипта');
    json_decode($resulttrue); // вернет массив
    P.S. Прочитай: http://habrahabr.ru/post/138245/ http://habrahabr.ru/post/143317/
    Joslian нравится это.
  10. TopicStarter Overlay

    wsok Программист Пользователи

    Сообщения:
    606
    Лайки:
    173
    Пол:
    Мужской
    Репутация:
    3
    Код:
    echo json_encode($result);
    верно? проблема в том, что скрипт который принимает данные, получает пустую страницу.
  11. vieraw Пользователи

    Сообщения:
    54
    Лайки:
    27
    Репутация:
    0
    Листинг кода пожалуйста.
  12. TopicStarter Overlay

    wsok Программист Пользователи

    Сообщения:
    606
    Лайки:
    173
    Пол:
    Мужской
    Репутация:
    3
    Скрипт запрос:

    Код:
    <?php
    function sql_sender($code_fnc,$data){
    
    $url = "http://192.168.0.32/sapi.php";
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_POST, TRUE);
    curl_setopt($ch, CURLOPT_POSTFIELDS, 'k=22223&opcode='.$code_fnc.'&data='.$data.'');
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_HEADER, TRUE);
    curl_setopt($ch, CURLOPT_FAILONERROR, 1);
    //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 3);
    $result = curl_exec($ch);
    $header = substr($result, 0, curl_getinfo($ch, CURLINFO_HEADER_SIZE));
    $body = substr($result, curl_getinfo($ch, CURLINFO_HEADER_SIZE));
    return $body;
    curl_close($ch);
    //}else{
    //return "error";
    //}
    }
    
    $result= sql_sender("1","SELECT ID, name, email, creatime, coins FROM users ORDER BY ID ASC LIMIT 15");
    
    $var = str_replace(" ","",$result);
    $var = str_replace(")array(",")+++array(",$var);
    $var = str_replace("array(","",$var);
    $var = str_replace("\n","",$var);
    $var = str_replace(",)","",$var);
    
    $a1 = explode("+++", $var);
    
    
    foreach ($a1 as &$value) {
    $o .= $value."<br>";
    }
    
    
    echo $o;
    
    ?>
    Скрипт ответ:

    Код:
    <?
    $key = "22223";
    $ip_host_api = "192.168.0.56";
    $sql = $_POST['data'];
    
    $link = new mysqli('localhost', 'root', '1111', 'pwserver');
    
    if($ip_host_api == $_SERVER['REMOTE_ADDR']){
    
        if($key == $_POST['k']) {
    
            $result = mysqli_query($link, $sql);
    
    
    while( $row = mysqli_fetch_array($result, MYSQL_ASSOC) ){
    
    var_export ($row);
    
    }
    
    }else{
    echo "incorrect-key!";
    }
    }
    
    
    /* Освобождаем используемую память */
    mysqli_free_result($result);
    /* Закрываем соединение */
    mysqli_close($link);
    ?>
    --- добавлено: 31 янв 2015 в 22:50 ---
    в данном варианте я получаю визуальный дамп массива, с которым почему то не могу работать как с массивом...
    Последнее редактирование модератором: 8 фев 2015
  13. vieraw Пользователи

    Сообщения:
    54
    Лайки:
    27
    Репутация:
    0
    PHP:
    while( $row mysqli_fetch_array($resultMYSQL_ASSOC) ){

    var_export ($row);

    }
    Замени на:
    PHP:

    $res 
    = []; //array()
    while( $row mysqli_fetch_array($resultMYSQL_ASSOC) ){
    $res[] = $row;
    }
    echo 
    json_encode($res);
    А это:
    PHP:
    $resultsql_sender("1","SELECT ID, name, email, creatime, coins FROM users ORDER BY ID ASC LIMIT 15");
    на
    PHP:
    $resultjson_decode(sql_sender("1","SELECT ID, name, email, creatime, coins FROM users ORDER BY ID ASC LIMIT 15"), true);
    В result у тебя будет массив с которым и работай.
    Joslian и wsok нравится это.
  14. TopicStarter Overlay

    wsok Программист Пользователи

    Сообщения:
    606
    Лайки:
    173
    Пол:
    Мужской
    Репутация:
    3
    Получилось, теперь буду думать как мне вывести данные в человеческий вид, в браузер ) Попробую разобраться с массивом... если окончательно мозг не сломаю )
  15. vieraw Пользователи

    Сообщения:
    54
    Лайки:
    27
    Репутация:
    0
    Что там думать? Алекс же писал:
    PHP:
    foreach ($result as $i => $row)
    {
      echo 
    $row['name'];
    }
  16. TopicStarter Overlay

    wsok Программист Пользователи

    Сообщения:
    606
    Лайки:
    173
    Пол:
    Мужской
    Репутация:
    3
    Будете смеяться, но оно работает =)
    PS: Проблема с этим моментом решена, спасибо всем, кто отозвался, продолжу дальше теперь кодить )
    --- добавлено: 31 янв 2015 в 23:22 ---
    как раз его конструкцию и использовал )
    Последнее редактирование модератором: 8 фев 2015
Черновик сохранён Черновик удалён
Similar Threads
  1. akademik
    Ответов:
    1
    Просмотров:
    942
  2. tunes
    Ответов:
    4
    Просмотров:
    1.068
  3. CoolMan
    Ответов:
    4
    Просмотров:
    1.736
  4. Clac
    Ответов:
    9
    Просмотров:
    1.248
Загрузка...

Поделиться этой страницей