Ошибка с PHP коннектом к MySQL

id9999
На сайте с 06.02.2009
Offline
8
789

Здравствуйте!

Помогите пожалуйста исправить ошибку:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\home\phpsite\ on line 6

Вот php код:

<?php

$db = mysql_connect("localhost","user","password");

mysql_select_db("sitedb",$db);

$result = mysql_query("SELECT title FROM set WHERE page='index'",$db);

$myrow = mysql_fetch_array($result);

?>

<?php echo $myrow['title']; ?>

БД:

CREATE TABLE `set` (

`id` int(99) NOT NULL auto_increment,

`page` text NOT NULL,

`title` varchar(255) NOT NULL,

`desc` varchar(255) NOT NULL,

`keyw` varchar(255) NOT NULL,

`text` text NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=5 ;

--

-- Дамп данных таблицы `set`

--

INSERT INTO `set` VALUES (1, 'index', 'Главная', 'Простое описание', 'Ключики', 'Текст текст текст текст');

Ответ на вопрос "Что делали до того, как появилась ошибка?": Пишу движок сам, с нуля. Появилась после того, как начал коннектиться к БД.

Ответ на вопрос "логин и пасс проверяли?": Да.

Сервер: denwer

Dreammaker
На сайте с 20.04.2006
Offline
569
#1

$db = mysql_connect("localhost","user","password") or die(mysql_error());

mysql_select_db("sitedb",$db) or die(mysql_error());

$result = mysql_query("SELECT title FROM set WHERE page='index'",$db) or die(mysql_error());

так пробовали?

[Удален]
#2

set - служебное слово. Перепишите

$result = mysql_query("SELECT title FROM set WHERE page='index'",$db);

на

$result = mysql_query("SELECT title FROM `set` WHERE page='index'",$db);
S1
На сайте с 19.02.2008
Offline
57
#3

дублирование

wdsg
На сайте с 09.02.2009
Offline
31
#4

В большинстве случаев

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in...

означает ошибку в SQL. Сделайте сразу после mysql_query(...) вот так:

echo mysql_error();
Проектирование и разработка сложных IT-систем. Вожусь с проблемными задачами.
id9999
На сайте с 06.02.2009
Offline
8
#5
nikitian:
set - служебное слово. Перепишите
$result = mysql_query("SELECT title FROM set WHERE page='index'",$db);

на
$result = mysql_query("SELECT title FROM `set` WHERE page='index'",$db);

Попробовал изменить название таблицы, не помогло.

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'desc,text FROM tropa WHERE page='index'' at line 1

id9999 добавил 19.04.2009 в 21:34

Dreammaker:
$db = mysql_connect("localhost","user","password") or die(mysql_error());
mysql_select_db("sitedb",$db) or die(mysql_error());
$result = mysql_query("SELECT title FROM set WHERE page='index'",$db) or die(mysql_error());

так пробовали?

Да, не помогло.

id9999 добавил 19.04.2009 в 21:39

wdsg:
В большинстве случаев
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in...

означает ошибку в SQL. Сделайте сразу после mysql_query(...) вот так:
echo mysql_error();

Не помогло.

embo
На сайте с 05.12.2008
Offline
24
#6

SELECT title FROM `set` WHERE page = 'index'

работает. не надо юзать ключевые слова в названии таблиц и полей.

Плавно двигаемся от сапы к статьям (http://miralinks.ru/users/registration/from:4223)
wdsg
На сайте с 09.02.2009
Offline
31
#7

id9999, что Вы имеете ввиду под "Не помогло"? Вы не увидели, какую ошибку возвращает MySQL-сервер?

fleyg
На сайте с 21.09.2005
Offline
143
#8

Во первых по человечески к базе приконнектитесь.

таблицу сделайте zzz, и вперед

<?

define("DBName","base");

define("HostName","localhost");

define("UserName","user");

define("Password","password");

if(!mysql_connect(HostName,UserName,Password))

{

echo "".DBName."!<br>";

echo mysql_error();

exit;

}

mysql_select_db(DBName);

$result = mysql_query("SELECT title FROM zzz WHERE page='index'");

$myrow = mysql_fetch_array($result);

?>

<?php echo $myrow['title']; ?>

id9999
На сайте с 06.02.2009
Offline
8
#9

Пролема оказалась в служебном названии поля таблицы.

Кроме поля title я использовал еще и keywords,desc,text...(на примере убрал, чтобы код был по меньше)

Так вот поле desc оказалось проблемным, сменил его название и все заработало.

Всем спасибо!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий