помогите ПОЖАЛУЙСТА. При попытке вывода инфы из бд
соед с бд
< ?php
$db = mysql_connect("localhost","vlad","123");
mysql_select_db("first",$db);
$result=mysql_query("SELECT * FROM firma",$db);
$n = mysql_fetch_array("$result");
echo $n
?>
в браузере выдает:
mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\home\localhost\www\myscl.php on line 13
Чего я не сделал??
соед с бд
< ?php
$db = mysql_connect("localhost","vlad","123");
mysql_select_db("first",$db);
$result=mysql_query("SELECT * FROM firma",$db);
$n = mysql_fetch_array("$result");
echo $n
?>
в браузере выдает:
mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\home\localhost\www\myscl.php on line 13
Чего я не сделал??
И использовать везде двойные кавычки вместо одинарных тоже, мне кажется, ни к чему.
Ещё я сильно подозреваю, что в выводе вы получите не совсем то, что хотели.
mysql_fetch_array()
выбирает только один ряд запроса. Более того, поля запроса записываются в вашу переменную как ассоциативный массив, где имена ключей — названия полей. Т.е. если вы так хотели вывести некую длинную таблицу с несколькими полями, то у вас ничего не получится.получаю то же сообщ: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\home\localhost\www\myscl.php on line 12
ТО ЕСТЬ НА СТРОКЕ: $n = mysql_fetch_array($result);
??вЫВЕСТИ ХОТЕЛ ТОЛЬКО ПЕРВУЮ СТРОКУ БД Т.К. УЧУСЬ
mysql_query()
вернул FALSE. Перед тем, как пытаться читать ряды данных, проверьте, успешен ли вообще был запрос.Например, так:
$result = mysql_query('SELECT * FROM firma') or die(mysql_error());
Только потом в готовом коде не забудьте заменить все
mysql_error()
на что-нибудь другое. Негоже простым пользователям знать об устройстве вашей базы данных.таблица назыв first а он ее два раза пишет плюс точка К чему это?)
и вообще должно писать не 'first.first' а 'first.firma'
может в select написал 'SELECT * FROM first' ?
mysql_connect("localhost","vlad","123");
mysql_select_db("first");
$result=mysql_query("SELECT * FROM `firma`");
$n = mysql_fetch_array($result);
var_dump($n);
?>
Вроде так.
А нахрена кавычки у firma? Это же не ключевое слово и спецсимволов нет.
Почему-то про FALSE вы тоже забыли. Если запрос был неверным, mysql_query() вернёт FALSE. Это совсем ни разу не «valid MySQL result resource».
вот исправленный код (бд называется first):
< ?php
$db = mysql_connect("localhost","vlad","123");
mysql_select_db("first",$db);
$result=mysql_query("SELECT * FROM FIRST")or die(mysql_error());
$n = mysql_fetch_array($result);
var_dump($n);
?>
а мне в ответ Table 'first.first' doesn't exist.
Ну значит у вас нет таблицы с названием first в базе данных с названием first.
В простых сценариях можно и опустить обработку искючений, зачем перегружать мизерный код?
Ну почему же явно? В первоначальном тексте vali та же ошибка появлялась бы независимо от правильности запроса. А так можно точно локализовать ошибку. Вы же любите стандартизацию? Так почему бы сразу не писать правильно даже в небольших текстах?
Я даже могу сказать, что разница между ' и " по скорости примерно в два раза, если требуется вставка переменных. Если не требуется, то разница в несколько процентов.
Что делать если даже простая база не хочет выводится.(
to SS Название базы правильное в чем еще косяк может быть?
Ну пускай название базы правильное. А вы уверены, что название таблицы в базе правильное? Вы в первом сообщение писали запрос, который должен выводить данные из таблицы "firma", а потом стали писать "SELECT * FROM FIRST", т.е. пытаться выводить данные из таблицы "first". Это ведь не одно и то же.
$q=mysql_query('SHOW TABLES');
while($b=mysql_fetch_assoc($q))
var_dump($b);
то Джей Ди: Выводит
array(1) { ["Tables_in_first"]=> string(7) "???????" }
Что это значит? зеленый я надо идти книги читать)
Первым делом проверь запрос в phpmyadmin или лучше скачать бесплатный MySQL QueryBrowser.
Насчёт знаков вопросика подозреваю какие-то проблемы с кодировкой.
Вывожу таблицу в цикле но в браузере вместо 3 позиций выводится только первая которая повторяется.
Вобщем проблема с id. При создании таблицы auto_increment поставил на id. Как исправить???
— В ДНК!
Вы же видите, что в цикле do...while у вас значения, возвращаемые функцией
mysql_fetch_array()
никуда не записываются. Кроме того do...while там, где более уместен просто while — совершенно ни к чему. Перепишите код так:while ($myrow = mysql_fetch_array($result)){
echo 'Супер клиент № -'.$myrow['id'].'<br>';
echo $myrow['name'].'<br>';
echo $myrow['coment'].'<br>';
echo $myrow['zakazu'].'<br>';
}
null . auto_increment стоит
Потому что вы забыли убрать нафиг вашу строчку
$myrow = mysql_fetch_array($result);
, которая у вас стояла перед циклом do...while. Она уже не нужна, т.к. уже на первом проходе цикла идёт получение данных.Я и не сомневался. )
Просто тут дело было в том, что вы сделали цикл с пост-условием. При этом выборка нужных значений и запись в массив (которую вы забыли) происходила в конце цикла, тогда как попытка эти данные использовать у вас возникала сразу — по ходу цикла. Поэтому вы (или тот, кто вам подсказал) написали вызов функции mysql_fetch_array() до цикла вообще — чтобы получить первый элемент. Самое забавное, что проверку, вернул ли первый вызов mysql_fetch_array() хоть что-нибудь, вы не произвели, т.е. если бы результат был пустым, у вас бы всё равно вылезли предупреждения о попытке использования неинициализированных переменных.
В исправленном мной варианте вызов происходит в начале цикла, кроме того запись значений в массив происходит прямо в условии (вы поначалу этого даже и не написали и поэтому выводились данные, записанные в массив до того, как начался цикл). А работает такая конструкция потому, что в циклах или условных операторах само условное выражение приводится к логическому типу и проверяется, не равно ли оно true («истине»). Т.е. логика while ($myrow = mysql_fetch_array($result)) в том, что переменной $myrow присваивается значение, возвращённое функцией mysql_fetch_array(), затем значение уже $myrow приводится к логическому типу (про неявные преобразования типа поищите в учебнике или официальной документации) и сравнивается с true. Если функция вернёт пустой результат, то он же присвоится переменной и после преобразования такой результат будет равен false, а значит цикл выполняться не будет.
< ?php $db = mysql_connect ('localhost','Vlad','pass');
mysql_select_db ('php1',$db);
$r = mysql_query ("SELECT title,meta_d,meta_k,text FROM settings WERE page='index'",$db)or die(mysql_error());
while ($myrow = mysql_fetch_array($r));
Выдает:
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 'page='index'' at line 1