Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Почему то не выбирает данные из базы
 
 автор: scva   (03.06.2009 в 10:33)   письмо автору
 
 

перехожу по ссылке вида <a href="category.html?id='.$res["id"].'">'.$res["cat"].'</a>

на стр category.html делаю запрос к базе
<?


$result = mysql_query ("SELECT * FROM podcat WHERE id =' $cat '");
$res = mysql_fetch_assoc($result);


{echo ''.$res["title"].'<br>'; }



?>
в базе таблица podcat имеет id - номер , title - название , cat - номер случайный (к примеру 56,1,59,85 и тд.)

Ничего не выводится, в чем дело?
Спасибо!!!

  Ответить  
 
 автор: Valick   (03.06.2009 в 10:41)   письмо автору
 
   для: scva   (03.06.2009 в 10:33)
 

Типы не совпадают наверно.
уберите апострофы из запроса

$result = mysql_query ("SELECT * FROM podcat WHERE id = $cat");

  Ответить  
 
 автор: aexb   (03.06.2009 в 10:55)   письмо автору
 
   для: scva   (03.06.2009 в 10:33)
 

Кавычки я бы оставил - без них совсем просто юзать сиквел-инъекции.

Для отладки лучше делать так:
<?
$sql 
"SELECT * FROM `podcat` WHERE `id`='".$cat."'";
$result mysql_query$sql );
?>


И всегда можно сказать
<? echo $sql?>
и посмотреть, как выглядит ваш запрос. И, например, попробовать его в phpMyAdmin

По выводу - есть несколько вариантов. Можно использовать
<?
while( $row mysql_fetch_object$result ) {
  echo 
$row->id."<br />";
  echo 
$row->title."<br />";
}
?>


или
<?
while( $row mysql_fetch_array$result ) {
  echo 
$row['id']."<br />";
  echo 
$row['title']."<br />";
}
?>

  Ответить  
 
 автор: Valick   (03.06.2009 в 11:19)   письмо автору
 
   для: aexb   (03.06.2009 в 10:55)
 

юзать сиквел-инъекции
Это как?

  Ответить  
 
 автор: aexb   (03.06.2009 в 12:18)   письмо автору
 
   для: Valick   (03.06.2009 в 11:19)
 

Очень просто:
http://ru.wikipedia.org/wiki/SQL_injection

  Ответить  
 
 автор: Valick   (03.06.2009 в 12:27)   письмо автору
 
   для: aexb   (03.06.2009 в 12:18)
 

Мда... Вы уверены, что от инъекции спасут апострофы?
А в данном случае поле id 99.9% - это цифра, и уж если не предохранятся (с помощью intval например) и "сувать куды попало", то тут "медицина бессильна"

  Ответить  
 
 автор: aexb   (04.06.2009 в 15:45)   письмо автору
 
   для: Valick   (03.06.2009 в 12:27)
 

апострофы в том числе. а проверку данных на валидность еще никто не отменял

  Ответить  
 
 автор: Trianon   (05.06.2009 в 08:49)   письмо автору
 
   для: aexb   (04.06.2009 в 15:45)
 

чушь.

  Ответить  
 
 автор: Slo_Nik   (03.06.2009 в 12:30)   письмо автору
 
   для: scva   (03.06.2009 в 10:33)
 

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

<?php 
 
if(!isset($_GET['id'])){
 echo 
"Нет переданных данных";
}
?>

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

<?php 
if(isset($_GET['id'])) $id $_GET['id'];
?>

а потом в запросе подставляй уже
"SELECT * FROM podcat WHERE id =' $id '"

или
"SELECT * FROM podcat WHERE id =' .$_GET['id'].'"

на ни как не надо подставлять $cat

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования