准备好的语句和img文件上传失败

时间:2015-05-29 15:12:26

标签: php html image mysqli prepared-statement

我正在尝试创建我的第一个准备好的声明,我真的可以使用一些帮助来看看我做错了什么。在执行此操作之前,我的大部分查询都正常工作,但是每个人都告诉我应该这样做以防止SQL注入。

我正在尝试将产品信息发送到我的数据库。包含在这些数据中,我正在尝试发送一个img文件并将其移动到我的数据库中。在尝试这个准备好的语句之前,我正在做一个简单的mysqli插入语句,我的查询中唯一不起作用的部分是获取img的文件名作为实际文件名显示在我的数据库中。它上传的方式是“数组”或“1”。我改变了一些事情,试图尽可能地使用程序声明。

我不太确定我在这个准备好的声明中上传img文件的尝试是否正确。原因是现在甚至没有发送到我的数据库。我的数据库连接没有任何错误。

我从验证开始。我还没有对img文件进行任何验证。稍后我会在实际发送后再添加。

然后我处理表单信息。我不确定我的$ file变量是否正确用于将文件名发送到db,因为我收到错误。

我在php错误信息上遇到此错误。注意:未定义的索引:img in /home4 /pfarley1 /public_html / adddctct.php on the line 90

//Create
$date = date('Y-m-d H:i:s');

if($validation->passed()) {
    if(isset($_POST['create'])){ 
        $product_id = trim( $_POST['product_id'] );
        $name = trim( $_POST['name'] );
        $price = trim( $_POST['price'] );
        $saleprice = trim( $_POST['saleprice'] );
        $final_price = trim( $_POST['final_price'] );
        $shippingprice = trim( $_POST['shippingprice'] );
        $category = trim( $_POST['category'] );
        $item_details = trim( $_POST['item_details'] );
        $item_details2 = trim( $_POST['item_details2'] );
        $description = trim( $_POST['description'] );
        $viewproduct_type = trim( $_POST['viewproduct_type'] );
        $date = ( $_POST['date_created'] );
 //line 90 $file = ($_POST ['img'] [move_uploaded_file($_FILES['file']['tmp_name'],"productpics/". $_FILES['file']['name'])] );

    //Connection
    $con = mysqli_connect("localhost","root","","bfb");
    /* check connection */
        if (mysqli_connect_errno()) {
            printf("Connect failed: %s\n", mysqli_connect_error());
            exit();
        }



    /* create a prepared statement */
    if ($stmt = mysqli_prepare($con, "INSERT INTO products ('product_id', 'name', 'price', 'saleprice', 'final_price', 'shippingprice', 'category', item_details', 'item_details2', 'description', 'viewproduct_type', 'date', 'img') VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)")) {


        /* bind parameters for markers */
        $stmt->bind_param('isiiiisssssis', $product_id, $name, $price, $saleprice, $final_price, $shippingprice, $category, $item_details, $item_details2, $description, $viewproduct_type, $date, $file);

        /* execute query */
        $stmt->execute();


    /* close statement */
    mysqli_stmt_close($stmt);
        }
    }
  }
 }
 }   
?>

表格

<form action="" method="POST" enctype="multipart/form-data">
    <div class="field">
        <label for="product_id">Product ID</label>
        <input type="text" name="product_id" class="smallinputbar" required>
    </div>
    <div class="field">
        <label for="name">Product Name</label>
        <input type="text" class="inputbar" name="name" required>
    </div>
    <div class="field">
        <label for="price">Product Price</label>
        <input type="text" class="smallinputbar" name="price" required>
    </div>
    <div class="field">
        <label for="saleprice">Sale Price</label>
        <input type="text" class="smallinputbar" name="saleprice">
    </div>
    <div class="field">
        <label for="final_price">Final Price</label>
        <input type="text" class="smallinputbar" name="final_price" required>
    </div>
    <div class="field">
        <label for="shippingprice">Shipping Price</label>
        <input type="text" class="smallinputbar" name="shippingprice" required>
    </div>
    <div class="field">
        <label for="category">Category</label>
        <input type="text" class="inputbar" name="category" required>
    </div>
    <div class="field">
        <label for="item_details">Item Details</label>
        <input type="message" class="messageinput" name="item_details" required>
    </div>
    <div class="field">
        <label for="item_details2">Item Details 2</label>
        <input type="message" class="messageinput" name="item_details2">
    </div>
    <div class="field">
        <label for="description">Description</label>
        <input type="message" class="messageinput" name="description" required>
    </div>
    <div class="field">
        <label for="viewproduct_type">View Product Type</label>
        <select class="optionbar" name="viewproduct_type">
            <option name="notSelected">Not Selected</option>
            <option name="viewproduct_type" value="a href='./viewProduct.php?view_product=$id">Standard</option>
            <option name="viewproduct_type" value="Option">Option</option>
        </select>
    </div>

        <input type="hidden" name="token" value="<?php echo Token::generate(); ?>">
        <label for="button">

        <input type="submit" id="button" name="create" value="Create New Product">
        </label>

    <span class="floatright">
        <input type="file" name="file" class="inputbarfile">
        <input type="submit" name="create" id="signinButton" value="Upload">
    </span>

我按照php手册和youtube中的示例进行操作,但没有一个像我正在做的那样,特别是添加了img文件上传。

有人看到我准备好的陈述或我试图上传img文件的方式出错吗?我已经被困在img文件上传很长一段时间了,并尝试了一百万种不同的方式。

0 个答案:

没有答案