【问题标题】:GET ID from an array and POST to JOIN table从数组中获取 ID 并 POST 到 JOIN 表
【发布时间】:2015-07-30 09:15:33
【问题描述】:

我有 3 个通过连接链接的表,所以我的想法是我有一个数组作为我的表单的一部分,它列出了我的 cat_list 表中的所有类别:

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

所以我正在遍历我的 cat_list 并显示它们,如果我对这些执行 var_dump,我会得到:

array(2) { ["cat_id"]=> string(1) "1" ["cat_title"]=> string(11) "Consumables" }
array(2) { ["cat_id"]=> string(1) "3" ["cat_title"]=> string(12) "Service Desk" }
array(2) { ["cat_id"]=> string(1) "4" ["cat_title"]=> string(14) "Solutions Team" }
array(2) { ["cat_id"]=> string(1) "5" ["cat_title"]=> string(7) "@Remote" }
array(2) { ["cat_id"]=> string(1) "6" ["cat_title"]=> string(12) "new test cat" }

这很好,但我需要做的是获取我选择的任何一个的 ID,并将它们发布到我的连接表中,如下所示:

    `cat_doc_link_table` (
    `id` int(11) NOT NULL,
      `link_cat_id` int(11) NOT NULL,
      `link_doc_id` int(11) NOT NULL
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=

8 ;

我 fetchAll 的 cat_list 来创建这样的循环:

<?php 


try{
    // Selecting entire row from cat_list table
    $results = $dbh->query("SELECT cat_id, cat_title FROM cat_list");

}catch(Exception $e) {
    echo $e->getMessage();
    die();
}

$cat = $results->fetchAll(PDO::FETCH_ASSOC);


?>

我要发布的操作脚本如下所示:

<?php

include 'db_con.php';

try {

$dbh = new PDO("mysql:host=$hostname;dbname=dashboardr",$username,$password);

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // <== add this line

$sql = "UPDATE doc_list SET doc_title = :doc_title, doc_content = :doc_content, doc_updated=CURRENT_TIMESTAMP WHERE doc_id = :doc_id";
$query = $dbh->prepare($sql);
$query->execute(array(":doc_title"=>$_POST["doc_title"],":doc_content"=>$_POST["doc_content"], ":doc_id"=> $_POST["doc_id"]));

if ($query) {
    header ('Location: ../docList.php');
}
else{
}

$dbh = null;
}
catch(PDOException $e)
{
echo $e->getMessage();
}

}
?>

【问题讨论】:

  • 究竟是什么不起作用?
  • 问题是我真的很想知道如何从复选框中选择的项目数组中获取 ID,并将它们发布到 JOIN 表中,同时还发布到更新文档的表中同时。数组将需要发布所选中的 ID,并将其自身与我正在编辑的文档 ID 相关联。
  • 我真的看不出这两块代码在哪里连接。您根本没有在第二个文件中引用您的 $cat_list
  • 这是我对包含它的位置感到困惑的地方 - 我需要一些指导,因为我是关系表的新手,并且在发布/更新到另一个表时更新一个表
  • 分类和文档有什么联系?是一对一的关系,还是一对多的关系?

标签: php mysql forms pdo


【解决方案1】:
$SQL = "INSERT INTO `cat_doc_link_table`(`link_cat_id`, `link_doc_id`) VALUES";
$values = "";
$params = [];
$docId = $_POST["doc_id"];
foreach($cat_list as $cat)
{
    $values.= "(?, ?), ";
    $params[] = $cat["cat_id"];
    $params[] = $docId;
}
$values = substr($values, 0, -2);
$SQL.= $values;
$query = $dbh->prepare($SQL);
$query->execute($params);

您首先在此处遍历您的类别,然后创建一个 VALUES 字符串 ($values.=)。然后,我们将参数绑定到 ?标记 ($params[] = $cat["cat_id"];)。最后,我们执行查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-07
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 2023-03-28
    • 2011-12-18
    • 1970-01-01
    相关资源
    最近更新 更多