联接表未在

时间:2015-05-23 08:07:43

标签: php html mysql

所以我有3个表doc_list,cat_list和cat_doc_link_table我已经建立了一个带有WYSIWYG帖子创建者的管理面板,想法是当你想要创建一个新帖子时我列出了你可以分配它的类别: / p>

<?php
require_once '../../db_con.php'; 

try{
    $results = $dbh->query("SELECT * FROM cat_list");

}catch(Exception $e) {
    echo $e->getMessage();
    die();
}
$category = $results->fetchAll(PDO::FETCH_ASSOC);
?>

<label><input type="checkbox" name="" class="selectall"/> Select all</label>

<div id="checkboxlist" >
    <?php
        foreach($category as $cat){ 
    ?>

    <input type="checkbox" value="<?php echo $cat["cat_id"]; ?>" name="cat_no[]" id="box1"> <?php echo $cat["cat_title"]; ?></a><br>

    <?php
    }
    ?>

然后是其余的输入字段。

它将在doc_list中发布并按预期添加一个新行,但在连接表中,我希望它获取doc的值和cat的值并将它们结合起来,它不会发布到该表中 - 我已经完成了一个var转储,它肯定知道我从复选框中选择哪些类别,但是不会发布到该连接表中?

$sql = "INSERT INTO `cat_doc_link_table`(`link_cat_id`, `link_doc_id`) VALUES";
$values = "";
$params = [];

foreach($_POST["cat_no"] as $cat)

    var_dump($cat);

{
    $values.= "(?, ?), ";
    $params[] = $cat["cat_id"];
    $params[] = $docId;
}
    $values = substr($values, 0, -2);
    $sql.= $values;
    $query = $dbh->prepare($sql);
    $query->execute($params);       

    if ($dbh->query($sql)) {

    }else{}

    $dbh = null;
    }catch(PDOException $e)

    {
    header ('Location: ../list_doc.php?success=1');
    }

    }

}

1 个答案:

答案 0 :(得分:2)

要访问所选类别,您应该只使用$ cat,而不是$ cat [“cat_id”]

...
foreach($_POST["cat_no"] as $cat)

{
    var_dump($cat); // 

    $values.= "(?, ?), ";
    $params[] = $cat; // correct here
    $params[] = $docId;
}
...