Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > не выполняется вставка в БД


Автор: nextzi0 10.10.2008, 10:58
А у меня наоборот!

Код


if ($_GET['action'] == "show") {
            $link = mysql_connect($host,$user,$pwd);
            mysql_query("SET NAMES 'cp1251'",$link);
            mysql_select_db($dbname);
            $qry = "SELECT * FROM files";
            $res = mysql_query($qry,$link);
            
            while ($row = mysql_fetch_array($res)){...}



Ругается на строку while ($row = mysql_fetch_array($res)){...} 
 пишет: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

=( Ведь все верно написано мною
Тоесть SELECT Не хочет почему-то работать

Автор: skyboy 10.10.2008, 12:12
Цитата(nextzi0 @  10.10.2008,  09:58 Найти цитируемый пост)
Тоесть SELECT Не хочет почему-то работать

т.е. вызвать mysql_error и посмотреть, что за ошибка в запросе - не судьба? а скопировать запрос в тот же PHPMyAdmin и опять же посмотреть на текст ошибки запрещает религия? 

Автор: nextzi0 10.10.2008, 13:31
Цитата(skyboy @ 10.10.2008,  12:12)
Цитата(nextzi0 @  10.10.2008,  09:58 Найти цитируемый пост)
Тоесть SELECT Не хочет почему-то работать

т.е. вызвать mysql_error и посмотреть, что за ошибка в запросе - не судьба? а скопировать запрос в тот же PHPMyAdmin и опять же посмотреть на текст ошибки запрещает религия?

вставля тот же самый запрос в пма - все ок, все работает.
ошибку нашел, в чем закономерность - не пойму:
раньше в скрипте было так:

Код

<?php
   include('data.php'); /*здесь хранятся переменные $host, $user, $pwd, $dbname и т.п.*/
   $link = mysql_connect($host,$user,$pwd);
   mysql_select_db($dbname);
   ...
?>



теперь сделал так

Код

<?php
   
   $link = mysql_connect('host','user','password');
   mysql_select_db('dbname');
   ...
?>



непонятно...

Автор: bars80080 10.10.2008, 14:23
наверно, всё же разница есть. сдаётся мне он и не выполнял подключения к БД, а выдавал ошибку, мол пароль, логин или ещё чего не правильно. однако, ошибки видать были отключены

error_reporting(E_ALL);

вначале скрипта мог бы объяснить в чём дело


да и просто проверить, что в $host,$user,$pw надо было бы

Автор: nextzi0 10.10.2008, 14:47
хм странно, но показ ошибок у меня включен на всё...
может быть это как то связано с видимостью переменных и с функцией include, потому что все переменные у меня заданы и не пусты.

Автор: bars80080 10.10.2008, 14:49
ты просто их проверь, сразу после вставки в функцию mysql_connect и mysql_select_db

var_dump($login);

Автор: nextzi0 10.10.2008, 15:01
Заменил include на require, все работает...

Автор: skyboy 10.10.2008, 15:32
Цитата(bars80080 @  10.10.2008,  13:23 Найти цитируемый пост)
error_reporting(E_ALL);

ему и возвращает
Цитата(nextzi0 @  10.10.2008,  09:58 Найти цитируемый пост)
mysql_fetch_array(): supplied argument is not a valid MySQL result resource

а вот причину того, что запрос не выполнен, возвращает mysql_error, яростно не используемый. вот и не видно причины. и игра с error_reporting выявить причину никак не поможет.

Автор: nextzi0 10.10.2008, 21:04
skyboy, посмотрел по mysql_error ошибку, немного стало ясно:
идентификатор результата запроса не возвращается, т.к. у меня в базу записывается строка с названием фильма - 
X's & O's.avi. Я думаю это из за апострофов, потому что все названия фильмов до этого фильма (в которых имена обычные, без спецсимволов) в базу записываются нормально.

запрос на запись такой:

(skiped)
mysql_real_escape_string($filename);
$rs = mysql_query("SELECT * from `files` WHERE `name` = '$filename'",$link);
(skiped)

как только $filename становится равным X's & O's.avi, запрос валится:
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 's & O's.avi'' at line 1
Вроде и  прослешил, что еще не так? 

Автор: bars80080 10.10.2008, 21:14
случаем не опечатка?

Код

$filename = mysql_real_escape_string($filename);
$rs = mysql_query("SELECT * from `files` WHERE `name` = '$filename'",$link);

Автор: nextzi0 10.10.2008, 21:30
Точно! Спасибо!  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)