[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: mysql_num_rows() перестает работать в теле функции
Гость_Андрей
Привет,

подскажите, пожалуйста, решение проблемы.
есть код типа:
<?
...
$res = mysql_query("select * from posts where post_title=", $link);
$num = mysql_num_rows($res);
...
?>
код отрабатывает правильно, но если его перенести в функцию, при выполнении появляется ошибка:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /sata1/home...

решение проблемы найти не смог, единственное, что нашел - переменная $res должна быть глобальной, но обьявление переменной до функции не помогло.

заранее благодарен за ответы.



Спустя 17 минут, 21 секунда (13.03.2010 - 15:32) DeeKeiD написал(а):
Используй $res в самой функции т.е
function my_function()
{
$res = mysql_query("select * from posts where post_title=", $link);
$num = mysql_num_rows($res);
}

Спустя 15 минут, 42 секунды (13.03.2010 - 15:48) Гость_Андрей написал(а):
Моя функция выглядит так:

function temp(){
require 'adm/connect.php';
$res = mysql_query("select * from posts where post_title="kolbasa", $link);
$num = mysql_num_rows($res);
}

она не работает sad.gif. переменная $res раньше нигде не объявлялась

если вызвать mysql_query до функции и передать в нее параметр, скрипт выполняется корректно:

$res = mysql_query("select * from posts where post_title="kolbasa", $link);
temp($res);

function temp($rot){
require 'adm/connect.php';
$num = mysql_num_rows($rot);
}

не пойму, что приводит к такому поведению. описание mysql_num_rows не ставит никаких ограничение на использование..

Спустя 26 минут, 52 секунды (13.03.2010 - 16:14) DeeKeiD написал(а):
странно,у меня функция
function	my_func()
{
$res = mysql_query("SELECT * FROM `users` WHERE `id` = '1'");
$row = mysql_num_rows($res);
echo $row;
}
my_func();

работает нормально

Спустя 9 минут, 25 секунд (13.03.2010 - 16:24) Гость_Андрей написал(а):
а у меня нет.
может дело в соединении с БД. Подскажи, пожалуйста, как ты устанавливаешь соединение (я вижу, что второй параметр mysql_query отсутствует).

Спустя 3 минуты, 43 секунды (13.03.2010 - 16:28) DeeKeiD написал(а):
index.php:
include ('config.php');
switch($_GET['page'])
{
case "test": include('modules/test.php'); break;
default: include ('modules/news.php'); break;
}

config.php:
$dbhost = 'localhost';
$dbname = 'mydb';
$dbuser = 'root';
$dbpass = 'passw';
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname);

test.php:

function my_func()
{
$res = mysql_query("SELECT * FROM `users` WHERE `id` = '1'");
$row = mysql_num_rows($res);
echo $row;
}
my_func();

тоесть у меня все файлы для работы с базой подключены к index.php к которому в свою очередь подключаются все страницы

Спустя 4 часа, 59 минут, 32 секунды (13.03.2010 - 21:27) sergeiss написал(а):
Цитата (Гость_Андрей @ 13.03.2010 - 16:48)
function temp(){
require 'adm/connect.php';
$res = mysql_query("select * from posts where post_title="kolbasa", $link);
$num = mysql_num_rows($res);
}

Параметр $link надо либо передавать в функцию, либо делать глобальным, либо просто не использовать (как делает DeeKeiD). В последнем случае берется последний линк с БД. Если он был один, то тогда всё вообще просто получается, и всё работает (пример - как раз код DeeKeiD).

Спустя 11 минут, 54 секунды (13.03.2010 - 21:39) Гость_Андрей написал(а):
Спасибо вам огромное, господа. Скопировал код один-в-один из последнего примера DeeKeiD и увидел, что все работает.
далее методом проб дошел до ошибки в своем коде. у меня при переносе кода в функцию терялся префикс названия таблиц, который хранился в подключаемом файле. в общем, еще раз благодарю user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.