Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法插入复选框以获取未定义的变量反馈_Php_Mysqli - Fatal编程技术网

Php 无法插入复选框以获取未定义的变量反馈

Php 无法插入复选框以获取未定义的变量反馈,php,mysqli,Php,Mysqli,我有一个奇怪的地方在这里-所以我显示了一个列表的类别从我的数据库作为复选框时,创建一篇文章。我勾选了这篇文章属于哪一个,它应该带上doc_id和cat_id表单,并勾选了哪个框。当我打开错误报告时,我得到以下信息: Notice: Undefined index: cat_id in /Applications/MAMP/htdocs/admin/actions/new_doc.inc.php on line 53 array(4) { ["doc_name"]=> string(2) "

我有一个奇怪的地方在这里-所以我显示了一个列表的类别从我的数据库作为复选框时,创建一篇文章。我勾选了这篇文章属于哪一个,它应该带上doc_id和cat_id表单,并勾选了哪个框。当我打开错误报告时,我得到以下信息:

Notice: Undefined index: cat_id in /Applications/MAMP/htdocs/admin/actions/new_doc.inc.php on line 53
array(4) { ["doc_name"]=> string(2) "df" ["doc_owner"]=> string(3) "dsf" ["doc_content"]=> string(3) "dsf" ["submit"]=> string(0) "" }
这是指这里的这一行:

$cat_ids = $_POST['cat_id'];
整个代码块如下所示:

if (empty($errors)) { 

// MAKING THE QUERY 

$q = "INSERT INTO docs (doc_name, doc_content,  doc_owner, created_date) VALUES ('$dn', '$dc', '$do', NOW() )"; 

$r = mysqli_query($dbc, $q); 

if ($r) { 

$doc_id = mysqli_insert_id($dbc); 

$query = "INSERT INTO doc_cat_join (cat_id,doc_id) VALUES ";

$cat_ids = $_POST['cat_id']; 

$length = count($cat_ids); 
for ($i = 0; $i < count($cat_ids); $i++) { 
$query.='(' . $cat_ids[$i] . ',' . $doc_id . ')'; 

if ($i < $length - 1) 
$query.=','; 

} 

mysqli_query($dbc, $query); 
mysqli_close($dbc); 
if(空($errors)){
//提出质询
$q=“在文档中插入(文档名称、文档内容、文档所有者、创建日期)值(“$dn”、“$dc”、“$do”、NOW())”;
$r=mysqli_查询($dbc,$q);
如果($r){
$doc\u id=mysqli\u insert\u id($dbc);
$query=“插入到文档目录连接(目录id,文档id)值中”;
$cat\u id=$\u POST['cat\u id'];
$length=计数($cat_id);
对于($i=0;$i
下面是我如何显示复选框的:

<?php

function build_cat_checkboxes(){

    global $dbc;

    $q = "SELECT * FROM cats";

    $r = mysqli_query ($dbc, $q); // Run the query.

    // FETCH AND PRINT ALL THE RECORDS
    while ($row = mysqli_fetch_array($r)) {
    echo '<ul><li><label><input type="checkbox" name="cat_id[]" value="' . $row['cat_id'] . '"> ' . $row["cat_name"] . '</label></li></ul>';
    }
}

?>

我无法理解为什么它不能插入doc_cat_join表,而like提到它应该使用doc_id和cat_id,并将它们作为一个具有id的新行插入

下面是该表视图的一个示例:


如果未勾选复选框,则根本不会有POST参数cat\U id。
因为这也意味着文档没有分配到单个类别,这可能是输入验证/错误处理的一部分

if (empty($errors)) { 
  if (!isset($_POST['cat_id'])) {
    die('no category assigned'); // or maybe a bit more sophisticated error handling
  }

注意!你应该绑定你的参数。从我上面的例子来看,在我的数据库表中选择和插入数据的更好方法是什么?使用MySQLi
prepare
bind
execute
方法。我在上面发布的链接中有一个例子。但是你是否建议我从MySQLi_uuuu转到PDO?否。L在“MySQLi”标题下查看示例,或在“Prepared statements”下查看。