Author |
Message |
Hornax
Guest
Карма: 388 поощрить/наказать
|
Posted: Fri Jan 06, 2006 2:13 pm (написано за 1 минуту 3 секунды)
Post subject: проблемы с функцией mysql_fetch_assoc()
|
|
При применении этой фунцкии (листинг 28.3) выдается ошибка: Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in z:\home\localhost\www\reg.php on line 19 Все записанно корректно и правильно. В чем проблема?
|
|
Back to top |
|
 |
Andrey Gurin
Участник форума

Joined: 24 May 2005
Posts: 183
Карма: 20 поощрить/наказать
Location: Italy
|
Posted: Mon Jan 09, 2006 3:41 pm (спустя 3 дня 1 час 28 минут; написано за 1 минуту 29 секунд)
Post subject:
|
|
А как выглядит запрос который Вы посылаете базе данных?
|
|
Back to top |
|
 |
Hornax
Guest
Карма: 388 поощрить/наказать
|
Posted: Wed Jan 11, 2006 12:43 pm (спустя 1 день 21 час 2 минуты; написано за 1 минуту 9 секунд)
Post subject:
|
|
require_once "mysql_connect_users.php"; $name=$_REQUEST['name']; $r=mysql_query('SELECT * FROM Hornax ORDER BY name'); for($res=array();$row=mysql_fetch_assoc($r);$res[]=$row); $res1=$res['name']; print_r($res1); таблица и база данных в наличие имеются, только вот ошибку функции генерирует... Файл mysql_connect_users полностью соответствует соответствующему (mysql_connect) из листинга.
|
|
Back to top |
|
 |
Andrey Gurin
Участник форума

Joined: 24 May 2005
Posts: 183
Карма: 20 поощрить/наказать
Location: Italy
|
Posted: Wed Jan 11, 2006 2:09 pm (спустя 1 час 25 минут; написано за 1 минуту 3 секунды)
Post subject:
|
|
Code (php): | скопировать код в буфер обмена | require_once "mysql_connect_users.php";
$name=$_REQUEST['name'];
$r=mysql_query (www.php.net/mysql_query)('SELECT * FROM Hornax ORDER BY name'); // ? /* может, Вы хотите сделать так? $r=mysql_query("SELECT * FROM Hornax ORDER BY $name"); Если должно быть так, то знайте что не очень хорошо брать что-то из $_REQUEST и без проверок засовывать это нечто в запрос к базе */ if (mysql_errno (www.php.net/mysql_errno)()) // Смотрим, какую ошибку выдает база { die (www.php.net/die)(mysql_error (www.php.net/mysql_error)()); }
for($res=array (www.php.net/array)();$row=mysql_fetch_assoc (www.php.net/mysql_fetch_assoc)($r);$res[]=$row); $res1=$res['name']; print_r (www.php.net/print_r)($res1); |
|
|
Back to top |
|
 |
Hornax
Guest
Карма: 388 поощрить/наказать
|
Posted: Thu Jan 12, 2006 3:09 pm (спустя 1 день 59 минут; написано за 3 минуты 56 секунд)
Post subject:
|
|
Нет, все равно не идет. Выдается ошибка Notice: Undefined index: name in z:\home\localhost\www\reg.php Зато теперь только одна =) Спасибо огромное, про кавычки даже не подумал. Что касается получения из $_REQUEST, то это уже потом, сейчас надо чуть уловить, а потом проерки делать. Как я понял, скрипт не находит нужную яйчейку. Но таблица есть, создавал ее скриптом Code (php): | скопировать код в буфер обмена | <?php include_once "mysql_connect_users.php"; mysql_query (www.php.net/mysql_query)("CREATE TABLE Hornax (name TEXT, race TEXT,password TEXT,level INT)"); ?> | пробовал с кавычками, как с одинарными, так и с двойными. Вроде должно все получиться было... Еще раз спасибо.
|
|
Back to top |
|
 |
Andrey Gurin
Участник форума

Joined: 24 May 2005
Posts: 183
Карма: 20 поощрить/наказать
Location: Italy
|
Posted: Thu Jan 12, 2006 5:52 pm (спустя 2 часа 42 минуты; написано за 3 минуты 11 секунд)
Post subject:
|
|
Да не за что (-: А по поводу Notice: Undefined index: name in z:\home\localhost\www\reg.php, то, скорее всего просто надо написать вместо $name=$_REQUEST['name']; $name = isset($_REQUEST['name']) ? $_REQUEST['name'] : 'Имя столбца по умолчанию, например: name';
|
|
Back to top |
|
 |
Hornax
Заглянувший
Joined: 12 Jan 2006
Posts: 7
Карма: 0 поощрить/наказать
|
Posted: Fri Jan 13, 2006 2:20 pm (спустя 20 часов 28 минут; написано за 3 минуты 32 секунды)
Post subject:
|
|
А почему не работает Code (php): | скопировать код в буфер обмена | <?php include_once "mysql_connect_users.php"; mysql_query (www.php.net/mysql_query)("CREATE TABLE Hornax (name TEXT, race TEXT,password TEXT,level INT)"); ?> | ??? Там все без $_REQUEST сделано, а все равно нужное почему-то не создается. Кроме того, переманная $name изпользовалась, чтобы таблицу создавать и читать из нее данные. Когда я указал напрямую имя таблицы, то необходимость в ней отпала (только в скрипте я ее не стал удалать). P.S. А что вообще значит эта ошибка? Я англиийский знаю средне, вот как понял: "Не идентифицирован индекс: 'name' там-то там-то" Все равно - еще раз спасибо.
|
|
Back to top |
|
 |
Maus
Модератор

Joined: 29 Jun 2003
Posts: 8151
Карма: 271 поощрить/наказать
Location: пос. Омсукчан Магаданской области
|
Posted: Fri Jan 13, 2006 5:26 pm (спустя 3 часа 6 минут; написано за 58 секунд)
Post subject:
|
|
Hornax
Точнее, "Не определён индекс: name" - то есть в массиве не найдено ключа с таким именем.
|
|
Back to top |
|
 |
Hornax
Заглянувший
Joined: 12 Jan 2006
Posts: 7
Карма: 0 поощрить/наказать
|
Posted: Fri Jan 13, 2006 5:34 pm (спустя 8 минут; написано за 2 минуты 2 секунды)
Post subject:
|
|
Но в БД такое поле должно быть, запускал же Code (php): | скопировать код в буфер обмена | <?php include_once "mysql_connect_users.php"; mysql_query (www.php.net/mysql_query)("CREATE TABLE Hornax (name TEXT, race TEXT,password TEXT,level INT)"); ?> | Возможно как-то криво создалось и стоит попробовать еще раз? P.S. Сорри за несколько туповатые вопросы, только начинаю в web-программирование входить, не всегда важные мелочи видно =)
|
|
Back to top |
|
 |
Maus
Модератор

Joined: 29 Jun 2003
Posts: 8151
Карма: 271 поощрить/наказать
Location: пос. Омсукчан Магаданской области
|
Posted: Fri Jan 13, 2006 5:47 pm (спустя 13 минут; написано за 58 секунд)
Post subject:
|
|
Hornax
В БД такое поле может и было, а вот в $_REQUEST - не было. Смотрите внимательнее. Об ошибке рапортует PHP, а не MySQL
|
|
Back to top |
|
 |
Hornax
Заглянувший
Joined: 12 Jan 2006
Posts: 7
Карма: 0 поощрить/наказать
|
Posted: Fri Jan 13, 2006 6:56 pm (спустя 1 час 8 минут; написано за 9 минут 10 секунд)
Post subject:
|
|
Не совсем ясно, поробую по пунктам: 1. Сначала выдавалась ошибка функции mysql_fetch_assoc. Поменял кавычки - проблема отпала. 2. Теперь выдается ошбика, что в $res нету ключа 'name'. 3. Ключ 'name' не может существовать по причине а)В БД нет такого поля (вариант отпадает, т.к. ошибку генерирует php, а не my_sql) б)Функция mysql_fetch_assoc не создала элемента массива $res['name'] (вернее очередное знаение $row не было равно паре ключ-значение name=>значение поля в БД. в)В $_REQUEST нет такого поля (вариант отпадает, если эта переменная не используется, видимо вас ввела в замешательство строкаее я записал здесь по оишбке, она была только в исходном варианте, когда имя таблицы бралось из поля) Остается вариант б)? Что-то не так в работе функции или ее параметрах?
|
|
Back to top |
|
 |
Andrey Gurin
Участник форума

Joined: 24 May 2005
Posts: 183
Карма: 20 поощрить/наказать
Location: Italy
|
Posted: Fri Jan 13, 2006 7:12 pm (спустя 15 минут; написано за 51 секунду)
Post subject:
|
|
Попробуйте нижеследующий код... Что имеем на выходе? Code (php): | скопировать код в буфер обмена | $hostname = 'localhost'; # Здесь крутится сервер бд $username = 'root'; # Пользователь, то есть Вы $password = ''; # Ваш пароль $db = 'test'; # Имя базы данных (в mysql test обычно создается при инсталляции)
# Подключение к серверу бд mysql_connect (www.php.net/mysql_connect)($hostname,$username,$password); if (mysql_errno (www.php.net/mysql_errno)()) die (www.php.net/die)(mysql_error (www.php.net/mysql_error)());
# Создаем базу данных если ее еще нет mysql_query (www.php.net/mysql_query)("CREATE DATABASE IF NOT EXISTS $db"); if (mysql_errno (www.php.net/mysql_errno)()) die (www.php.net/die)(mysql_error (www.php.net/mysql_error)());
# Подключаемся к базе mysql_select_db (www.php.net/mysql_select_db)($db); if (mysql_errno (www.php.net/mysql_errno)()) die (www.php.net/die)(mysql_error (www.php.net/mysql_error)());
# Создаем таблицу если ее еще нет mysql_query (www.php.net/mysql_query)("CREATE TABLE IF NOT EXISTS hornax (name TEXT, race TEXT,password TEXT,level INT)"); if (mysql_errno (www.php.net/mysql_errno)()) die (www.php.net/die)(mysql_error (www.php.net/mysql_error)());
# Наполняем таблицу mysql_query (www.php.net/mysql_query)("INSERT INTO hornax SET name='Vasya',race='human',password='Vasya',level=0"); if (mysql_errno (www.php.net/mysql_errno)()) die (www.php.net/die)(mysql_error (www.php.net/mysql_error)());
mysql_query (www.php.net/mysql_query)("INSERT INTO hornax SET name='Petya',race='elf',password='Petya',level=0"); if (mysql_errno (www.php.net/mysql_errno)()) die (www.php.net/die)(mysql_error (www.php.net/mysql_error)());
mysql_query (www.php.net/mysql_query)("INSERT INTO hornax SET name='Kolya',race='goblin',password='Kolya',level=0"); if (mysql_errno (www.php.net/mysql_errno)()) die (www.php.net/die)(mysql_error (www.php.net/mysql_error)());
# Выбираем из таблицы сортируя по полю 'name' $resource = mysql_query (www.php.net/mysql_query)('SELECT * FROM hornax ORDER BY name'); if (mysql_errno (www.php.net/mysql_errno)()) die (www.php.net/die)(mysql_error (www.php.net/mysql_error)());
# Печатаем по очереди все записи while ($record = mysql_fetch_assoc (www.php.net/mysql_fetch_assoc)($resource)) { print_r (www.php.net/print_r)($record); } |
|
|
Back to top |
|
 |
Миша Спларов
Участник форума

Joined: 17 Nov 2003
Posts: 821
Карма: 65 поощрить/наказать
Location: Россия, Москва
|
Posted: Sat Jan 14, 2006 1:20 am (спустя 6 часов 7 минут; написано за 1 минуту 51 секунду)
Post subject:
|
|
Hornax, небольшой совет. Пишите при error_reporting(E_ALL) и при вызове любой mysql-функции пишите что-то типа mysql_query('MY QUERY') or die(mysql_error()); Это даст вам хотя бы базовую информацию о проблеме и позволит знать, что искать в гугле.
|
|
Back to top |
|
 |
GRAFzol
Guest
Карма: 388 поощрить/наказать
|
Posted: Tue Nov 28, 2006 7:24 pm (спустя 10 месяцев 14 дней 18 часов 3 минуты; написано за 2 минуты 59 секунд)
Post subject:
|
|
Тема я смотрю была давно уже исчерпана, но все же попробую спросить =) У меня проблема с этой же функцией. Code (php): | скопировать код в буфер обмена | $result=mysql_query (www.php.net/mysql_query)("SELECT * FROM books ORDER BY Author"); for ($data=array (www.php.net/array)(); $row=mysql_fetch_array (www.php.net/mysql_fetch_array)($result); $data[]=$row); $num_rows=mysql_num_rows (www.php.net/mysql_num_rows)($result); | Так вот в $result хранится результат выборки 23000 с лишним записей. В этом случае скрипт перестает работать на строчке с циклом for. При 3000 точно работает. Пробовал как php4 интерпретатором так и php5. Результат одинаков. На моей машине работает, на другом хостинге работает. А вот на этом нет. В чем проблема кто нибудь знает?
|
|
Back to top |
|
 |
Maus
Модератор

Joined: 29 Jun 2003
Posts: 8151
Карма: 271 поощрить/наказать
Location: пос. Омсукчан Магаданской области
|
Posted: Tue Nov 28, 2006 9:03 pm (спустя 1 час 39 минут; написано за 17 секунд)
Post subject:
|
|
GRAFzol
memory_limit ?
|
|
Back to top |
|
 |
|