Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > mysql SELECT COUNT(*). Не понимаю в чем проблема


Автор: Wheels 18.8.2009, 11:50
Код

$id=$_GET['id'];
$infa=db_query("SELECT * FROM news WHERE id=$id");
$row=mysql_fetch_array($infa);

$pinfa=db_query("SELECT COUNT(*) FROM news_photos WHERE newsplace = $row[place]");
$prow=mysql_fetch_array($pinfa);
$totally=$prow[0];


Unknown column '18_08_2009_1' in 'where clause'

Никак не могу понять где в этом элементарном коде ошибка. Посмотрите свежим глазом, пожалуйста.

Код

CREATE TABLE `news` (
  `id` int(4) unsigned NOT NULL auto_increment,
  `place` tinytext,
  `name` tinytext NOT NULL,
  `body` text NOT NULL,
  `date` tinytext NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=2 ;
 
Дамп данных таблицы `news`
INSERT INTO `news` VALUES (1, '18_08_2009_1', 'ываыва', 'ыва ываывыаыва', '2009-08-18 12:38:40');



CREATE TABLE `news_photos` (
  `id` int(4) unsigned NOT NULL auto_increment,
  `newsplace` tinytext NOT NULL,
  `pic` int(11) NOT NULL,
  `album` enum('yes','no') NOT NULL,
  `albumdir` int(11) NOT NULL,
  `comment` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=4 ;

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

INSERT INTO `news_photos` VALUES (1, '18_08_2009_1', 0, 'no', 0, 'выаываыв аываываыва');
INSERT INTO `news_photos` VALUES (2, '18_08_2009_1', 1, 'no', 0, 'ываыва ываываыаыва');
INSERT INTO `news_photos` VALUES (3, '18_08_2009_1', 2, 'no', 0, 'ываыв аываыва');


Заранее ОГРОМНЕЙШЕЕ человеческое спасибо.

Автор: enof 18.8.2009, 12:21
$row['place'] в кавычки нужно заключить.

Автор: MoLeX 18.8.2009, 12:22
Код

$pinfa=db_query("SELECT COUNT(*) FROM news_photos WHERE newsplace = '".$row['place']."'");


опередил enof


на 1 сек  smile 

Автор: Wheels 18.8.2009, 12:29
Цитата(enof @  18.8.2009,  12:21 Найти цитируемый пост)
$row['place'] в кавычки нужно заключить. 



Цитата(MoLeX @  18.8.2009,  12:22 Найти цитируемый пост)
опередил enof


Тфу ты, блин ))

Большое спасибо, ребят. Сижу и торможу. Выспаться что ли...

Автор: MoLeX 18.8.2009, 12:46
Цитата(Wheels @  18.8.2009,  12:29 Найти цитируемый пост)
Выспаться что ли... 

 smile 

Автор: Ипатьев 18.8.2009, 13:40
Вообще-то, обработка строковых данных для помещения в строку, включает в себя не только кавычки по краям, но и прослешивание в середине.
Так что надо пойти, покрепче выспаться, и дописать mysql_real_escape_string

Автор: Wheels 18.8.2009, 13:45
Цитата(Ипатьев @  18.8.2009,  13:40 Найти цитируемый пост)
Вообще-то, обработка строковых данных для помещения в строку, включает в себя не только кавычки по краям, но и прослешивание в середине.
Так что надо пойти, покрепче выспаться, и дописать mysql_real_escape_string 



Оно есть у меня. Я убрал все лишнее, перед тем, как на форум написать. Но все равно спасибо =)

Автор: Ипатьев 18.8.2009, 13:53
Хм. Очень странная идея - убирать часть кода перед тем, как просить найти в нем ошибку. 
Разве что, можно опять свалить на недостаток сна...

$_GET['id'] тоже этой функцией обратабывается?

Автор: Wheels 18.8.2009, 14:12
Цитата(Ипатьев @  18.8.2009,  13:53 Найти цитируемый пост)
$_GET['id'] тоже этой функцией обратабывается? 


Да, тоже обрабатывается. Убрал, что бы нагляднее выглядело потому что ошибка что с ней, что без нее одинаково лезла. У меня, вот, например, желание вникать в чужой код уменьшается прямо пропорционально его количеству. Думаю, что я не одинок и если уж есть проблема - стараюсь свести все к минимуму задавая вопрос.  Меня сбило с толку "where clause" (ошибка, указывающая на отсутствие столбца).
Код

$infa=db_query("SELECT * FROM news WHERE id='" . mysql_escape_string($id) . "'");


Еще раз большое спасибо.

Автор: Ипатьев 18.8.2009, 14:29
Ну, ошибка-то как раз понятная. в кавычках пишутся данные, а без - как раз имена полей, так что, все закономерно.

А удаление кода, вплоть до кавычек, как-то странно выглядит, особенно если учесть, что в них и было все дело smile

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