以正确的方式,这是我的表是这样做到这一点MySQL查询
我试图让下一个主要类别中的所有ID。这个完美的作品,但它做
FROM category WHERE (lft >= '$left') AND (rgt <='$right')
$allcat_ids = array();
$cat_id = mysql_real_escape_string($_GET['cat_id']);
$res = mysql_query("SELECT lft, rgt FROM category WHERE cat_id = '$cat_id'");
while ($category = mysql_fetch_assoc($res))
{
$left = $category['lft'];
$right = $category['rgt'];
}
$res = mysql_query("SELECT cat_id, lft, rgt FROM category WHERE (lft >= '$left') AND (rgt <='$right')");`
while ($category = mysql_fetch_object($res))
{
$allcat_ids[] = $category->cat_id;
}
至少有一点是错误的:绝对没有针对SQL注入防护。 – knittl 2011-12-29 15:56:02
@ knittl你无法分辨。从数据库中加载'$ left'和'$ right'变量,所以如果用户以正确的方式存储它(即使用数字数据类型),用户可以确定它们没问题。 – 2011-12-29 15:59:14
http://www.vbmysql.com/articles/database-design/managing-hierarchical-data-in-mysql – emre 2011-12-29 15:59:45