Php 警告:非法字符串偏移量';名称';

Php 警告:非法字符串偏移量';名称';,php,Php,我正在尝试创建一个产品插入页面,以便将产品插入数据库,然后在产品页面中显示它们 但是当我点击AddProduct按钮时,我得到了以下错误 警告:中的字符串偏移量“name”非法 第14行C:\MAMP\htdocs\Project\admin\insert.php 注意:未初始化的字符串偏移量:0英寸 第14行C:\MAMP\htdocs\Project\admin\insert.php 警告:中的非法字符串偏移量“tmp_name” 第15行C:\MAMP\htdocs\Project\adm

我正在尝试创建一个产品插入页面,以便将产品插入数据库,然后在产品页面中显示它们

但是当我点击AddProduct按钮时,我得到了以下错误

警告:中的字符串偏移量“name”非法 第14行C:\MAMP\htdocs\Project\admin\insert.php

注意:未初始化的字符串偏移量:0英寸 第14行C:\MAMP\htdocs\Project\admin\insert.php

警告:中的非法字符串偏移量“tmp_name” 第15行C:\MAMP\htdocs\Project\admin\insert.php

注意:未初始化的字符串偏移量:0英寸 第15行C:\MAMP\htdocs\Project\admin\insert.php

这里是insert.php页面

<?php
include'/setup/function.php';

$Error = "";
$_FILES['image'] = "";

//INSERT PRODUCT////////////////////////////////////////////////
if(isset($_POST['add_pro'])){

    $pro_cat        = validateFormData($_POST['category']);
    $pro_title      = validateFormData($_POST['title']);
    $pro_price      = validateFormData($_POST['price']);
    $pro_desc       = validateFormData($_POST['desc']);
    $pro_image      = $_FILES['image']['name'];
    $pro_image_tmp  = $_FILES['image']['tmp_name'];
    $pro_keyword    = validateFormData($_POST['keyword']);

    move_uploaded_file($pro_image_tmp, "image/$pro_image");

    $query = "INSERT INTO product (pro_id, pro_cat, pro_title, pro_price, pro_desc, pro_image, pro_keyword,) 
            VALUES (NULL, '$pro_cat', '$pro_title', '$pro_price', '$pro_desc', '$pro_image', '$pro_keyword')";
    $result = mysqli_query($conn, $query);

    mysqli_close($conn);
}
?>
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="description" content="">
        <meta name="author" content="">

        <title>Add New Product</title>

        <?php include'/setup/style.php'; ?>
        <!--[if lt IE 9]>
        <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
        <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
        <![endif]-->
    </head>
    <body>

        <?php echo $Error; ?>

        <div class="container">
            <div class="content">
                <h2>Add a New Product</h2>
                <form method="post" action="insert.php" enctype="multipart/form-data">
                    <div class="form-group">
                        <label for="title">Title</label>
                        <input type="text" name="title" class="form-control" id="title" placeholder="Enter Product Title">
                    </div>
                    <div class="form-group">
                        <label for="image">Add Image</label>
                        <input type="file" name="image" id="image">
                    </div>
                    <div class="form-group">
                        <label for="desc">Description</label>
                        <textarea name="desc" class="form-control" cols="50" rows="10" id="desc" placeholder="Enter Product Description"></textarea>
                    </div>
                    <div class="form-group">
                        <label for="price">Price</label>
                        <div class="input-group">
                            <span class="input-group-addon">$</span>
                            <input type="text" name="price" class="form-control" id="price" placeholder="Enter Product Price">
                        </div>                       
                    </div>
                    <div class="form-group">
                        <label for="keyword">KeyWords (seperate keywords with a coma.)</label>
                        <input type="text" name="keyword" class="form-control" id="keyword" placeholder="Enter Product KeyWords">
                    </div>
                    <div class="form-group">
                        <label for="category">Title</label>
                        <select name="category" class="form-control" id="category">
                            <option>Select a Category</option>
                            <?php
                            $Cquery = "SELECT * FROM category";
                            $Cresult = mysqli_query($conn, $Cquery);

                            if(mysqli_num_rows($Cresult) > 0){
                                while($row = mysqli_fetch_assoc($Cresult)){
                                    $cat_id = $row['cat_id'];
                                    $cat_title = $row['cat_title']; 
                            ?>
                            <option value="<?php echo $cat_id; ?>"><?php echo $cat_title; ?></option>
                            <?php }} ?>
                        </select>
                    </div>

                    <button type="submit" name="add_pro" class="btn btn-primary">Add Product</button>
                </form>
            </div>
        </div>



        <!-- Footer
        ================================================== -->
        <hr class="featurette-divider">
        <div class="container">
            <footer>
                <p>&copy; <?php echo date('Y'); ?> Arcitic Falcon &middot; <a href="#">Privacy</a> &middot; <a href="#">Terms</a></p>
            </footer>
        </div><!-- /.container -->

        <!-- Bootstrap core JavaScript
        ================================================== -->
        <?php include'/setup/javascript.php'; ?>
    </body>
</html>

您正在将
$\u文件['image']
设置为空字符串:

$_FILES['image'] = $_FILES['pdf'] = "";

删除它。

您已停止上载:

$_FILES['image'] = $_FILES['pdf'] = "";
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
由于您为这两个$\u文件条目分配了一个空字符串,因此它们不再是数组

$_FILES['image']['tmp_name'];
您正在对非数组使用非法偏移量。字符串可以被视为数组,但不能使用非数字索引与它们对话:

$foo = 'bar';
echo $foo[1]; // outputs "a"
echo $foo['baz']; // illegal offset

您应该在php文件的开头尝试这段代码

echo "<pre>";
print_r($_FILE['image']);
edcho "</pre>"; 
die;
echo”“;
打印($_文件['image']);
edcho“;
死亡

什么是打印($\u文件)产量?
$\u文件['image']=$\u文件['pdf']=”???其$\u文件['pdf']或$\u文件['images']?打印($\u文件);很抱歉,我现在编辑了代码,它是$_文件['image'],谢谢AbraCadver,我应该想到这一点。代码运行良好。