2015-08-18 46 views
0

这里我试图上传图像到目录并添加数据库中的路径。 在这里,我首先添加一些产品详细信息,并尝试上传图像以上传目录并将上传的图像路径添加到数据库中。如何在php中将图像上传到数据库?

这里是我做了什么:

<?php 
    /* Attempt MySQL server connection. Assuming you are running MySQL 
    server with default setting (user 'root' with no password) */ 
    $link = mysqli_connect("localhost", "root", "", "wan_products_box"); 

    // Check connection 
    if($link === false){ 
     die("ERROR: Could not connect. " . mysqli_connect_error()); 
    } 

    // Escape user inputs for security 
    $product_name = mysqli_real_escape_string($link, $_POST['product_name']); 
    $product_category = mysqli_real_escape_string($link, $_POST['product_category']); 
    $product_price = mysqli_real_escape_string($link, $_POST['product_price']); 
    $pro_url = mysqli_real_escape_string($link, $_POST['pro_url']); 
    $co_owners = mysqli_real_escape_string($link, $_POST['co_owners']); 


    // attempt insert query execution 
    $sql = "INSERT INTO product_list (product_name, product_category, product_price,product_referrence_URL,product_co_owners) VALUES ('$product_name', '$product_category', '$product_price', '$pro_url', '$co_owners')"; 
    if(mysqli_query($link, $sql)){ 
     echo "New product created."; 
    } else{ 
     echo "ERROR: Could not able to execute $sql. " . mysqli_error($link); 
    } 

    //image upload code 

    if($_POST) 
    { 
    if($_FILES["file"]["error"] > 0) 
    { 
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; 
    } 
    else 
    { 
    if(file_exists("uploaded_images/" . $_FILES["file"]["name"])) 
    { 
    echo $_FILES["file"]["name"] . " already exists. "; 
    } 
    else 
    { 
    if(move_uploaded_file($_FILES["file"]["tmp_name"],"uploaded_images/" . $_FILES["file"]["name"])) 
    { 
    $query_image = "INSERT INTO product_list (product_image_url) values ('".$_FILES['file']['name']."')"; 
    if(mysql_query($query_image)) 
    { 
    echo "Stored in: " . "uploaded_images/" . $_FILES["file"]["name"]; 
    } 
    else 
    { 
    echo 'Unable to store'; 
    } 
    } 
    } 
    } 
    } 
    mysqli_close($link); 
    ?> 

这是我的HTML表单:

<div id="menu2" class="tab-pane fade"> 
     <h4>Add new product</h4> 
     <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12"> 
     <div class="panel panel-default"> 
     <div class="panel-body">   


      <form class="form-horizontal" method="post" action="files/insert.php" role="form"> 
       <div class="form-group"> 
       <label class="control-label col-sm-2" for="product_name">Product Name</label> 
       <div class="col-sm-10"> 
        <input type="text" class="form-control" name="product_name" id="product_name" placeholder="Iphone 5c" required> 
       </div> 
       </div> 

       <div class="form-group"> 
       <label class="control-label col-sm-2" for="pwd">Product Category</label> 
       <div class="col-sm-10">        
        <select class="btn-btn-primary form-control" name="product_category"> 
        <option>Mobile</option> 
        <option>Television</option> 
        <option>Printer</option> 
        <option>Watch</option> 
        <option>Monitor</option> 
        </select> 
       </div> 
       </div> 

       <div class="form-group"> 
       <label class="control-label col-sm-2" for="product-pic">Upload your profile picture</label> 
       <div class="col-sm-10">   
        <input type="file" class="form-control" name="file" id="file" /> 
       </div> 
       </div> 


       <div class="form-group"> 
       <label class="control-label col-sm-2" for="product_price">Product Price</label> 
       <div class="col-sm-10"> 
        <input type="text" class="form-control" name="product_price" id="product_price" placeholder="Rs.36,000" required> 
       </div> 
       </div> 


       <div class="form-group"> 
       <label class="control-label col-sm-2" for="pro_url">Reference URL</label> 
       <div class="col-sm-10"> 
        <input type="URL" class="form-control" name="pro_url" id="pro_url" placeholder="http://www.amazon.com" required> 
       </div> 
       </div> 


       <div class="form-group"> 
       <label class="control-label col-sm-2" for="co_owners">Co-owners</label> 
       <div class="col-sm-10"> 
        <select class="btn-btn-primary form-control" name="co_owners"> 
         <option>Select no. owners</option> 
         <option>1</option> 
         <option>2</option> 
         <option>3</option> 
         <option>4</option> 
         <option>5</option> 
         <option>6</option> 
         <option>7</option> 
         <option>8</option> 
         <option>9</option> 
         <option>10</option> 
         <option>11</option> 
         <option>12</option> 
         <option>13</option> 
         <option>14</option> 
         <option>15</option> 
        </select>      
       </div> 
       </div> 


       <div class="form-group">   
       <div class="col-sm-offset-2 col-sm-10"> 
        <button type="submit" class="btn btn-success">Add product</button> 
       </div> 
       </div> 
      </form> 


     </div> 
     </div> 
     </div>  
    </div> 

的数据插入到数据库中,但图片上传部分是不会发生... 如何我可以这样做吗?我如何修改代码上传图像到数据库并添加数据库路径?

当我运行这个输出我得到的是

New product created. 
Notice: Undefined index: file in D:\xampp\htdocs\wan\files\insert.php on line 31 

Notice: Undefined index: file in D:\xampp\htdocs\wan\files\insert.php on line 37 

Notice: Undefined index: file in D:\xampp\htdocs\wan\files\insert.php on line 43 

Notice: Undefined index: file in D:\xampp\htdocs\wan\files\insert.php on line 
+0

你可以显示表格吗?听起来像你没有一个名为“文件”的文件输入 – rjdown

+0

你的表单失败了,为什么?因为...没有有效的enctype和/或缺少名称属性 –

+0

混合'mysql'和'mysqli' – Saty

回答

2

有几件事错在你的代码。

首先,您的表单在处理文件时缺少有效的文本类型enctype="multipart/form-data"

你也混的MySQL的API在你的第二个查询。

$query_image = "INSERT INTO product_list (product_image_url) values ('".$_FILES['file']['name']."')"; 
if(mysql_query($query_image)) 
  • 所以它会失败。

使用您在第一个查询中使用的相同方法。

  • 这些不同的API不会互混。

因此改变,要if(mysqli_query($link, $query_image))

同时添加or die(mysqli_error($link))mysqli_query()检查错误。

还要确保该文件夹有适当的权限被写入。

另一件事,你<select>的选项有没有值

<option>Select no. owners</option> 
<option>1</option> 
... 

您需要添加这些

<option value="empty_value">Select no. owners</option> 
<option value="1">1</option> 
... 

做同样的他人。

<option>Mobile</option>同样的东西。这些也应该有价值。

<option value="mobile">Mobile</option> 
... 

你不会在这些数据库中获得任何东西。

0

除了HTML部分中的问题,例如缺少enctype="multipart/form-data"。有一个在你的第二个查询的一个问题,这是这些错误的原因:

$query_image = "INSERT INTO product_list (product_image_url) values ('".$_FILES['file']['name']."')"; 

您需要将此更改为UPDATE查询和更新数据库中已经创建的行。

此外,对图像名称使用行的索引号是一种更好的方法。

+0

你在这里提出了一个很好的观点。但是,他们并没有使用正确的MySQL API,并且因为它没有看到任何被接受的答案或评论,所以OP的问题还不清楚。 –

相关问题