функция mysql_query в php - PullRequest
       10

функция mysql_query в php

1 голос
/ 02 ноября 2010
<?php 
  $con= mysql_connect("localhost","root","mysql");
  mysql_select_db("Db_name",$con);

  $res=mysql_query("select *from table_name");

  mysql_close($con);   // closing connection before fetching contents.

  while($r=mysql_fetch_array($res)) {
    echo $r['ename'];
  }

?>

Эта программа работает, даже если я закрываю соединение перед извлечением содержимого из таблицы.

Для того, чтобы получить содержимое таблицы из соединения $res не нужно?

Является ли $res просто программной переменной? Если да, то какую структуру данных он использует (ассоциативный массив?)

В oracle у нас есть неявный курсор и явный курсор. Есть ли в MySQL аналогичные вещи?

В вышеприведенной программе, где появляются курсоры?

Ответы [ 4 ]

3 голосов
/ 02 ноября 2010

$res в вашем случае это специальный тип, называемый «ресурс».Проще говоря, это набор возвращаемых данных, которые работают функции mysql_fetch_ *.Как таковой, он может жить за пределами связи.Проверьте документацию для более подробной информации.

2 голосов
/ 02 ноября 2010

Клиентская библиотека MySQL извлечет весь набор результатов перед возвратом к вызову mysql_query(), что объясняет, почему ваш код работает.

Вы можете использовать mysql_unbuffered_query() для постепенного извлечения строк , в этом случае вы должны держать соединение открытым .

Обратите внимание, что выборка строк обрабатывается внутри клиентского кода MySQL. $res - это просто непрозрачный тип ресурса , представляющий внутренний объект набора результатов (буферизованный или нет). Вы можете работать только с этим ресурсом, передав его другим функциям MySQL.

0 голосов
/ 02 ноября 2010

Как сказал Джейсон, $ res похож на обычную переменную типа Resource.Эта переменная сохраняет свое значение даже после того, как соединение mysql закрыто, поскольку оно не имеет связи с соединением mysql.

0 голосов
/ 02 ноября 2010

Для того, чтобы получить содержимое таблицы из $ res, соединение не обязательно?

Почему ты не попробовал и увидел?

В любом случае, в чем причина закрывать соединение вручную?

Является ли $ res просто переменной программы? Если да, то какую структуру данных он использует (ассоциативный массив?

Да, это переменная. Вы можете увидеть, что внутри с var_dump($res);

В oracle у нас есть неявный курсор и явный курсор. Есть ли в mysql эквивалентные вещи? В приведенной выше программе, где курсоры входят в картину?

Какую именно задачу вы пытаетесь решить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...