#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);
?>