Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Запрос о SELECT ... WHERE link='...' всегда даёт 0


Автор: 137 4.10.2007, 16:31
Вобщем есть скрипт, который парсит html файл с ссылками на статьи и записывает эти статьи в MySQL таблицу 
Код

CREATE TABLE `articles` (
  `article_id` int(11) NOT NULL auto_increment,
  `article_linkname` varchar(100) character set utf8 collate utf8_unicode_ci NOT NULL default '',
  `article_name` varchar(100) NOT NULL default '',
  `article_text` longtext NOT NULL,
  `article_categ` int(11) NOT NULL default '0',
  `article_editmark` smallint(1) NOT NULL default '0',
  `article_h` smallint(6) NOT NULL default '0',
  `article_page` int(11) NOT NULL default '1',
  PRIMARY KEY  (`article_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=39 ;


в article_linkname пишется транслит названия статьи, для использования его в ЧПУ так вот...
Код

mysql_query("SELECT article_id FROM articles WHERE article_linkname='$article'", $link)

$article - это и есть этот транслит который получается из ссылки. И этот запрос всегда возвращает 0, даже если статей с таким именем несколько(так у меня разбиение на страницы построено).

Так же заметил такую странность, что если статья записано тапорно забросом в базу через phpmyadmin то она выводится нормально...

и так вопрос:
В чем же может быть причина этой "мистики"?
 smile 

Автор: PARROT 4.10.2007, 16:56
Напечатать запрос не пробовали? Какие ошибки выдает?

Автор: 137 4.10.2007, 17:08
никаих ошибок.. возвращает 0

Автор: PARROT 4.10.2007, 17:15
запрос напечатайте и результат выложите сюда, вы на ошибки даже не проверяете. 

Автор: 137 4.10.2007, 17:30
результата нет. он просто не находит запись в таблице.
если сделать так 
Код
$res=mysql_query("SELECT article_id FROM articles WHERE article_linkname='Kletka-'", $link);
print_r($res);


то печатает: Resource id #4

Автор: PARROT 4.10.2007, 17:34
Не...
Код

echo "SELECT article_id FROM articles WHERE article_linkname='Kletka-'";
$res=mysql_query("SELECT article_id FROM articles WHERE article_linkname='Kletka-'", $link) or die(mysql_error());

Да ниче. Посмотреть вообще, что у вас из базы приходит и приходит ли вообще что-то, если нуль.

Автор: 137 4.10.2007, 17:38
Нету никаких ошибок. я уже это писал.  mysql_error() не говорит об ошибках.

Автор: bambuk 4.10.2007, 18:15
насколько я знаю в выражении SELECT нужно указать все столбцы, с которыми имеем дело..т.е. должно получиться что то вроде
Код

SELECT article_id, article_linkname FROM articles WHERE article_linkname='$article'

Автор: 137 4.10.2007, 18:18
даже если ставлю * не получается.

Автор: bambuk 4.10.2007, 18:25
можно на код взглянуть, где и что делаешь..? так что-либо трудновато сказать..

Автор: 137 4.10.2007, 18:35
Вот запись(тут немного через жопу, тк приходилось изголяться пробуя разные варианты...)
Код

...
$cnstr=count($ex_article);
$linkname=translit($head);
while($pg<$cnstr)
{
    $req="INSERT INTO articles VALUES ('','".$linkname."', '".$head."', '".$ex_article[$pg]."', '0', '0', '0', '";
    $pg++;
    $req.=$pg."')";
    mysql_query($req, $link);
}
...

Вывод(получение id статей с таким именем):
Код

function getarticle_ids($article)
{
    global $link;
    ($res=mysql_query("SELECT article_id, article_linkname FROM articles WHERE article_linkname='$article'", $link)) || die("table is not_ ids");
    while($row=mysql_fetch_array($res))
        {
            $article_ids[]=$row['article_id'];
        }
    return $article_ids;
}


Автор: Guedda 4.10.2007, 18:36

M
Guedda
Модератор: Здесь не место для флуда! Тему закрываю!


Причина: Вы не хотите прислушаться к мнению помогающих Вам, 137.

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