PHP单循环通过2个MySQL表
请查看此代码:PHP单循环通过2个MySQL表,php,mysql,loops,Php,Mysql,Loops,请查看此代码: $current_sql = mysql_query("SELECT * FROM `product_categories` WHERE `product`='{$_GET['id']}'"); $all_sql = mysql_query("SELECT * FROM `categories`"); $in = mysql_fetch_array($current_sql); while($ca = mysql_fetch_array($all
$current_sql = mysql_query("SELECT * FROM `product_categories` WHERE `product`='{$_GET['id']}'");
$all_sql = mysql_query("SELECT * FROM `categories`");
$in = mysql_fetch_array($current_sql);
while($ca = mysql_fetch_array($all_sql)){
echo("<label><input type=\"checkbox\" name=\"categories[]\" value=\"".$ca['ID']."\" class=\"cat_check\"");
if($edit){
if(in_array($ca['ID'], $in)){
echo(" checked=\"checked\"");
}
}
echo("> " . $ca['category'] . "</label><br/>\n");
}
请帮忙
更新:
抱歉,忘记添加:
$_GET['id'] = 1
反而
$in = mysql_fetch_array($current_sql);
做
基本上,问题是返回2个数组,我猜您有类似于数组([0]=1,[1]=17,等等…
)。这将导致检查这两个类别。如果您在代码中打印$in,您将看到我的意思。
$in = mysql_fetch_array($current_sql);
做
基本上,问题是返回2个数组,我猜您有类似于
数组([0]=1,[1]=17,等等…
)。这将导致检查这两个类别。如果您在代码中打印$in,您将看到我的意思。这将只给您一个数组,它位于映射表的第一行,这意味着它将包含1和20(类别和产品)
$in=mysql\u fetch\u数组($current\u sql)
为了获得正确的功能,您可能希望遍历它以获得所有类别。但是:
您最好将产品类别加入到同一个查询中,并保留某种布尔值以指示哪些类别已被选中。你现在这样做根本行不通
SELECT c.*, IFNULL(pc.category, 0, 1) as checked FROM `categories` c
LEFT JOIN `product_categories` pc ON pc.category = c.ID AND product = {$_GET['id']}
那你可以查一下
if ($resultset['checked'])
因为如果它是产品类别的一部分,它将是1,如果不是,它将是0
但是一定要转义您的参数,或者按照注释中的建议使用预先准备好的语句。这只会给您一个映射表第一行的数组,这意味着它将包含1和20(类别和产品) $in=mysql\u fetch\u数组($current\u sql) 为了获得正确的功能,您可能希望遍历它以获得所有类别。但是: 您最好将产品类别加入到同一个查询中,并保留某种布尔值以指示哪些类别已被选中。你现在这样做根本行不通
SELECT c.*, IFNULL(pc.category, 0, 1) as checked FROM `categories` c
LEFT JOIN `product_categories` pc ON pc.category = c.ID AND product = {$_GET['id']}
那你可以查一下
if ($resultset['checked'])
因为如果它是产品类别的一部分,它将是1,如果不是,它将是0
但一定要避开你的参数,或者按照别人在评论中的建议使用预先准备好的语句。试试这个:
$current_sql=mysql_query(“从product_categories
WHEREproduct
='{$\u GET['id']}'限制1中选择类别”)
如果($ca['ID']=$current_sql['ID'])){
echo(“checked=\”checked\”);}试试这个: $current_sql=mysql_query(“从
product_categories
WHEREproduct
='{$\u GET['id']}'限制1中选择类别”)
如果($ca['ID']=$current_sql['ID'])){
echo(“checked=\”checked\”);}试试看
$current_sql = mysql_query("SELECT * FROM `product_categories` WHERE `product`='{$_GET['id']}'");
$all_sql = mysql_query("SELECT * FROM `categories`");
$pcs = array();
while($in=mysql_fetch_array($current_sql);)){
$pcs[]=$in['ID']
}
while($ca = mysql_fetch_array($all_sql)){
echo("<label><input type=\"checkbox\" name=\"categories[]\" value=\"".$ca['ID']."\" class=\"cat_check\"");
if($edit){
if(in_array($ca['ID'], $pcs)){
echo(" checked=\"checked\"");
}
}
echo("> " . $ca['category'] . "</label><br/>\n");
}
$current\u sql=mysql\u query(“从`product\u categories`中选择*,其中`product`='{$\u GET['id']}'”;
$all\u sql=mysql\u查询(“从“类别”中选择*”;
$pcs=array();
而($in=mysql\u fetch\u数组($current\u sql);){
$pcs[]=$in['ID']
}
而($ca=mysql\u fetch\u数组($all\u sql)){
echo(“$ca['category']”,
\n);
}
试试看
$current\u sql=mysql\u query(“从`product\u categories`中选择*,其中`product`='{$\u GET['id']}'”;
$all\u sql=mysql\u查询(“从“类别”中选择*”;
$pcs=array();
而($in=mysql\u fetch\u数组($current\u sql);){
$pcs[]=$in['ID']
}
而($ca=mysql\u fetch\u数组($all\u sql)){
echo(“$ca['category']”,
\n);
}
什么条件会告诉您要选中此复选框。Offtopic:您应该使用准备好的语句或使用转义$\u GET['id']
以避免SQL注入。是否可以执行var\u转储($in);出口就在$in=mysql_fetch_数组($current_sql)?您的条件是什么,它会告诉您要选中此复选框。Offtopic:您应该使用准备好的语句或使用转义$\u GET['id']
,以避免SQL注入。是否可以执行var\u转储($in);出口就在$in=mysql_fetch_数组($current_sql)?