Forum Webscript.Ru
Программирование => PHP => Тема начата: grinder от 06 Мая 2002, 06:38:20
-
Делаю запрос в базу, потом смотрю результаты с помощью while($row=mysql_fetch_array()). Но потом, в этом же цикле, мне нужно сделать еще один запрос, и опять использую while($row=mysql_fetch_array()). То есть $row становится другим, и когда идет проверка первого while, получается ерунда. Что делать?
while($row=mysql_fetch_array($my->sql_res))
{
$doc_name=$row[0];
$n=$row[6];
$e=$row[7];
$my->sql_query="
SELECT
load_date,
email,
flag
FROM
opinion
WHERE
flag=\\"$n\\"";
$my->sql_execute();
while($row=mysql_fetch_array($my->sql_res))
{
/* что-то */
}
}
?>
-
и опять использую while($row=mysql_fetch_array()).
используй другое имя переменной. Например $row1 :-))
-
имхо, row тут не причем. тут главное поменять:
$my->sql_res
на другой id результата.
-
Dm Как это не при чем???
в двух разных циклах - одна переменная??
надо менять и то и другое.
Имхо
-
Ой... да... действительно.
совсем плохой стал :-(((
ДМ прав..., как всегда :-)
спасибо Алиену, что объяснил, где у меня ошибка.... (в ДНК) :-)))))
-
По совету DM, я изменил id результата, то есть для выполнения запроса я написал аналогичную функцию, но результат возвращался в другую переменную sql_res_1. Может можно как-то сделать проще? А то класс для mysql как-то не очень красиво выглядит...
Вот посмотрите, две одинаковые функции, по сути(sql_execute & sql_execute_1).
function sql_connect()
{
$this->conn_id=mysql_connect($this->sql_host,$this->sql_login,$this->sql_passwd);
mysql_select_db($this->sql_database);
}
function sql_execute()
{
$this->sql_res=mysql_query($this->sql_query,$this->conn_id);
$this->sql_err=mysql_error();
}
function sql_execute_1()
{
$this->sql_res_1=mysql_query($this->sql_query,$this->conn_id);
$this->sql_err_1=mysql_error();
}
function sql_close()
{
mysql_close($this->conn_id);
}
}
?>
-
grinder
в первом случае можно записать результат в любую другую переменную: $res = $my->sql_res;
следовательно, нет смысла делать вторую функцию в классе.
PS. а вообще действительно требуется вложенные запросы?
может быть, можно оптимизировать.
-
Нельзя оптимизировать, в том то и дело. По крайней мере я не знаю как, хотя уже с этим сталкивался.
Я пробовал $res = $my->sql_res;, что-то не получилось, поэтому и сделал вторую функцию. Хотя, может быть, это из-за пока еще кривых рук.
-
grinder
а первый цикл заменил?
while($row=mysql_fetch_array($res))
плюс $res = $my->sql_res вставляется только один раз (в данном случае) после sql_execute до цикла.