Можем ли мы отправить результат запроса mysql как возвращаемое значение функции, используя php?

#php

#php

Вопрос:

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

 function test(){
     $query = "select * from mytable where id=123";
     $data = mysql_query($query) or die(mysql_error());

     return $data;
}

$info = test();
  

возможно ли это и могу ли я использовать $info для получения значений в виде $info [0],$info [1]..

Ответ №1:

взгляните на функцию mysql_fetch_array.

Эта функция позволяет вам повторять результат запроса, который является ресурсом, и превращать каждую строку в массив.Поэтому вам следует использовать цикл while для получения всех строк в ресурсе;

Ответ №2:

Вы упускаете одну важную часть, возвращая результат mysql_query(), просто возвращает указатель результата, а не dataset. Вы должны добавить mysql_fetch_array , mysql_fetch_assoc или mysql_fetch_row :

 function test(){
     $query = "select * from mytable where id=123 LIMIT 1";
     $data = mysql_query($query) or die(mysql_error());
     $result = mysql_fetch_row($data);

     return $result;
}

$info = test();
  

теперь вы можете использовать $info [0], $info[1]. При использовании mysql_fetch_assoc вы могли бы использовать $info[‘fieldname’].

Я также добавил ОГРАНИЧЕНИЕ 1, поскольку вы отправляете длинный идентификатор, это, вероятно, уникально, и после 1 результата, скорее всего, больше ничего не будет возвращено.

Ответ №3:

Вы можете это сделать, однако, по моему опыту, лучше сохранить содержимое базы данных инкапсулированным, чтобы вы не предоставляли ресурсы MySQL вне контекста базы данных, которые затем понадобятся в дальнейшем mysql_fetch_assoc() и тому подобное для них.

Я бы использовал PDO там и вернул результаты fetchAll(PDO::FETCH_ASSOC) . Таким образом, $info есть необходимые данные без необходимости запускать дополнительные функции базы данных.

Ответ №4:

 <?php

    $link = mysql_connect('localhost', 'USERNAME', 'PASSWORD');
    mysql_select_db('DB NAME', $link);

    function test()
    {
        $result = mysql_query("select * from wp_options");
        $data = array();

        while($row = mysql_fetch_array($result))
        {
            $data[] = $row;
        }

        return $data;
    }

    echo "<pre>";
    print_r(test());
    echo "</pre>";

    mysql_close($link);
?>