foreach проблем

PHP_Masters

Registered
Та проблема ми е следния:

записвам категорията на някоя новина( примерно ) с catid в полето за самата новина, и после като си изкарвам новината ( пак примерно ) искам да покажа в коя категория е та направих си един foreach така

Код:
foreach($row as $v)
{
	$rs=mysql_query('SELECT * FROM cats WHERE id='.$v['catid']);
	$row2=mysql_fetch_assoc($rs);
	echo '<br/>'.$row2['name'];
}

като $row e $row=mysql_fetch_assoc($rs); а $rs е

Код:
$rs=mysql_query('SELECT * FROM sites WHERE id='.$id);

като $id=$_GET['id'];

и то ми показва

Код:
Тестова категория




Тестова категория

с няколко празни полета и после я повтаря, как да го оправя

ето целия код

Код:
<?php
session_start();
include 'conf.php';
$id=$_GET['id'];
$rs=mysql_query('SELECT * FROM sites WHERE id='.$id);
$row=mysql_fetch_assoc($rs);
echo $row['name'];
foreach($row as $v)
{
	$rs=mysql_query('SELECT * FROM cats WHERE id='.$v['catid']);
	$row2=mysql_fetch_assoc($rs);
	echo '<br/>'.$row2['name'];
}
 
Код:
<?php
session_start();
include 'conf.php';
$id = $_GET['id'];
$rs = mysql_query('SELECT * FROM sites WHERE id='.$id);

while( $row=mysql_fetch_assoc($rs); ){

   echo $row['name'];
   $rs=mysql_query('SELECT * FROM cats WHERE id='.$row['catid']);
   $row2=mysql_fetch_assoc($rs);
   echo '<br/>'.$row2['name'];
}
Пробвай така и си защити малко заявката, така и идиот като мен може да ти хакне бд-то :)
Ако ползваш PHP5, прегледай http://php.net/pdo :)
 
така работи, но и все пак търся решение на проблема

btw, аз старата заявка не виждам как ще се хакне
 
Ако се следва твоята логика:

Код:
<?php 
session_start(); 
include 'conf.php'; 
$id=$_GET['id']; 
$rs=mysql_query('SELECT * FROM sites WHERE id='.$id); 
while($row=mysql_fetch_assoc($rs)){
   $rs=mysql_query('SELECT * FROM cats WHERE id='.$row['catid']); 
   $row2=mysql_fetch_assoc($rs); 
   echo $row['name'].' - '.$row2['name'].'<br/>'; 
}
Но не е добра идея да се пускат заявки към базата в цикъл. Можеш да го избегнеш с left join


Код:
session_start(); 
include ('./conf.php'); 
$id = (int) (isset($_GET['id']) ? $_GET['id'] : 0);
$rs=mysql_query('
SELECT 
	`sites`.`name` as `nameSite`, 
	`cats`.`name` as `nameCategory`
FROM 
	`sites`
	left join `cats` on (`catid` = `cats`.`id`)
WHERE 
	`sites`.`id` = '.$id
); 
while($row=mysql_fetch_assoc($rs)){
   echo $row['nameSite'].' - '.$row['nameCategory'].'<br/>'; 
}

Обърни внимание как взимам ИД-то на сайта от ГЕТ масива.
 

Горе