PHP 单循环遍历 2 个 MySQL 表

标签 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_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");

    }

这是输出:

<label><input type="checkbox" name="categories[]" value="1" class="cat_check" checked="checked"> PS3 Games</label><br/> 
<label><input type="checkbox" name="categories[]" value="16" class="cat_check"> Category 2</label><br/> 
<label><input type="checkbox" name="categories[]" value="17" class="cat_check" checked="checked"> Category 3</label><br/> 
<label><input type="checkbox" name="categories[]" value="18" class="cat_check"> Category 4</label><br/> 
<label><input type="checkbox" name="categories[]" value="19" class="cat_check"> Category 5</label><br/>

问题是只有 checkbox value="17"应该被选中,这里有 2 个 MySQL 数据库是结构:

categories:

ID    |   name
1         PS3 Games
16        Category 3
17        Category 4
18        Category 5
19        Category 6

product_categories

category     |    product
1                 20
17                1

请帮忙!!

更新:

抱歉忘了补充:

$_GET['id'] = 1

最佳答案

代替

$in = mysql_fetch_array($current_sql);

while ($prod_cat = mysql_fetch_array($current_sql)) {
  $in[] = $prod_cat['cat_id']; // where cat_id is the category ID in product_categories table
}

基本上问题是mysql_fetch_array返回 2 个数组,我猜你有类似 array([0] = 1, [1] =17, etc ...) 的东西。这导致要检查两个类别。如果您在代码中 print_r $in,您就会明白我的意思。

关于PHP 单循环遍历 2 个 MySQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6505742/

相关文章:

php - 需要在表中的列中找到最大值并递增

c - 在 C 编程中使用 for 循环填充 3d 数组

javascript - 使用 jquery 遍历 jsonp

php - MySQL更新重复事件

php - 有人用过 PHP 的(未设置的)转换吗?

python - 在python中循环多个变量

java - for 循环中每隔一行开头的空格

php - LOAD DATA LOCAL INFILE 只进入5行

MySQL 按行号更新

mysql - 使用 PHP 在 MYSQL 中将时间戳与日期匹配