我在php中有这种错误

时间:2015-02-08 03:28:17

标签: php sql

我在php中的文件上传中有这种错误。找到答案让我很头疼。当我检索某个文件上传的变量时,我无法检索它。继承我的代码。

 //this is the php code for validating all post and pass it to db
<?php
$id = $_SESSION['id'];
$pic = '';
$message = '';  

if(isset($_POST['add']))
{
    include_once('database.php');
    _addstocks($_POST);
    $message = 'New Stocks Record Added';
    echo $_POST['ipic'];

}
function post_value($key)
{
    if(isset($_POST[$key]))
        echo  htmlentities($_POST[$key]);
}

?>

//这是我的表单或要传递给db的数据

<form class="modal-content container" style="width:445;" method="post" enctype="multipart/form-data" >
        <br>
                <label>Item Code</label><br>
                <input type="text" name="icode" class="form-control" placeholder="Item Code" required autofocus><br>
                <label>Item Name</label><br>
                <input type="text" name="iname" class="form-control" placeholder="Item Name" required><br>
                <label>Item Description</label><br>
                <input type="text" name="idesc" class="form-control" placeholder="Item Description" required><br>

                <!--<label>Item Type</label><br>-->
                <input type="text" class="hidden" name="itype" value="perishable">
                <label>Item Price</label><br>
                <input type="text" name="iprice" placeholder="Item Price" class="form-control" required><br>
                <label>Item Quantity</label><br>
                <input type="text" name="iqty" placeholder="Item Quantity" class="form-control" required><br>
                <input type="text" class="hidden" name="estabno" value="<?php echo "01";?>">
                <div enctype="multipart/form-data">
                    <label>Upload Display Picture</label><br>
                    <label for="fileToUpload"><img src="photos/<?php echo $pic;?>" style="width:100px;height:100px"></label>
                    <input class=""type="file" name="ipic" id="fileToUpload"><br>
                </div>
                <input type="text" class="hidden" name="istat" value="available">

        <?php echo htmlentities($message);?>
        <input type="submit" name="add" value="Create" class="btn btn-success" style="float:right;" >
        <br><br><br>
    </form>

这是添加股票的数据库

function _addstocks($stocks)
{
    $sql = "INSERT INTO inventory
    (
        itemcode,
        itemname,
        itemdesc,
        itemcateg,
        itemprice,
        itempic,
        estabno,
        itemqty,
        status

    ) VALUES (?,?,?,?,?,?,?,?,?)";

    $db = database();
    $st = $db->prepare($sql);
    $st->execute(array(
        $stocks['icode'],
        $stocks['iname'],
        $stocks['idesc'],
        $stocks['itype'],
        $stocks['iprice'],
        $stocks['ipic'],
        $stocks['estabno'],
        $stocks['iqty'],
        $stocks['istat'])

    );
    $db = null;
}

这是我得到的错误。     http://i.imgur.com/7M7l18j.png

1 个答案:

答案 0 :(得分:1)

您需要通过$ _FILES [“ipic”] [“tmp_name”]访问它们 请参阅:http://www.w3schools.com/php/php_file_upload.asp

基本上,文件不是$ _POST / $ _ GET类型的请求。它是$ _FILES的一部分。那个页面应该会向你显示一些很好的用法。

更改:

echo $_POST['ipic'];

致:

echo $_FILES["ipic"]["tmp_name"]

要访问该文件,但这只会为您提供一个文件的路径,这是一个临时路径..您仍然需要移动文件或处理它。注意,在您的数据库中,您试图直接插入它..

您需要使用该链接中的“move_uploaded_file”将文件移动到文件夹,然后将URL的路径名称存储到数据库中,以便链接到该文件。

也可以存储某些项目,例如文件的base64版本,但取决于您的整体设计。