Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.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 将图像以及其他数据插入MYSQL数据库_Php_Mysql - Fatal编程技术网

Php 将图像以及其他数据插入MYSQL数据库

Php 将图像以及其他数据插入MYSQL数据库,php,mysql,Php,Mysql,我是一名学生,试图为uni创建一个交换站点。我突然想到一个问题。我搜索了所有的帖子,也有一些类似的帖子,但是当我试图更改代码以匹配所有内容时,就会出现中断。请友善一点,或者至少尝试一下,我正在学习 我试图完全更改文件上传的代码,但我严重迷失了方向。我有一个工作正常的登录和用户数据库,但由于某些原因,我无法将我的项目数据保存在“项目”数据库中。我刚得到消息文件没有上传 我试图存储关于发布的项目和图像的信息,并从会话中输入时间戳和用户名 这是项目的数据库设置: CREATE TABLE `item`

我是一名学生,试图为uni创建一个交换站点。我突然想到一个问题。我搜索了所有的帖子,也有一些类似的帖子,但是当我试图更改代码以匹配所有内容时,就会出现中断。请友善一点,或者至少尝试一下,我正在学习

我试图完全更改文件上传的代码,但我严重迷失了方向。我有一个工作正常的登录和用户数据库,但由于某些原因,我无法将我的项目数据保存在“项目”数据库中。我刚得到消息文件没有上传

我试图存储关于发布的项目和图像的信息,并从会话中输入时间戳和用户名

这是项目的数据库设置:

CREATE TABLE `item` (
  `itemid` int(10) NOT NULL PRIMARY KEY,
  `iname` varchar(25) NOT NULL,
  `idescription` varchar(25) NOT NULL,
  `itype` varchar(25) NOT NULL,
  `icolour` varchar(25) NOT NULL,
  `icategory` varchar(25) NOT NULL,
  `image` varchar(25) NOT NULL,
  `idate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `username` varchar(60) NOT NULL
);
这是php页面的代码:

<?php
session_start();
if ( !isset($_SESSION['userSession']) || isset($_SESSION['userSession']) && empty($_SESSION['userSession']) ) {
    header("Location: index.php");
}

require_once 'dbconnect.php';

if(isset($_POST['btn-postitem'])) {

    $iname = $_POST['iname'];
    $idescription = $_POST['idescription'];
    $itype = $_POST['itype'];
    $icolour = $_POST['icolour'];
    $icategory = $_POST['icategory'];

    $uploadDir = "upload/"; 
    $fileName = $_FILES['image']['name'];
    $filePath = $uploadDir . $fileName;
    $username = $_SESSION['userSession'];

    if(move_uploaded_file($_FILES['image']['tmp_name'],"upload/".$_FILES['image']['name']) ){
        $query_image = "INSERT INTO item(iname,idescription,itype,icolour,icategory,image,idate,username) VALUES('$iname','$idescription','$itype','$icolour','$icategory','$filePath','curdate()','$username')";


                // insert the image into db
        if(mysql_query($query_image)) {
            echo "Stored in: " . "upload/" . $_FILES['image']['name'];
             }
        else{
            echo "File name not stored in database";
        }
                }
                else{
                        echo 'File not uploaded';
                    }
         }
$db1->close();
?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Post Item</title>
<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen">
<link href="bootstrap/css/bootstrap-theme.min.css" rel="stylesheet" media="screen"> 
<link rel="stylesheet" href="style.css" type="text/css" />

</head>
<body>

<div class="signin-form">

    <div class="container">


        <form class="form-signin" method="post" id="register-form" enctype="multipart/form-data">

        <h2 class="form-signin-heading">Post Item</h2><hr />

        <?php
        if (isset($msg)) {
            echo $msg;
        }
        ?>

        <div class="form-group">
        <input type="text" class="form-control" placeholder="Item Name" name="iname" required  />
        </div>

        <div class="form-group">
        <input type="text" class="form-control" placeholder="Description" name="idescription" required  />
        </div>

        <div class="form-group">
        <input type="text" class="form-control" placeholder="Type of Item" name="itype" required  />
        </div>

        <div class="form-group">
        <input type="text" class="form-control" placeholder="Item Colour" name="icolour" required  />
        </div>

        <div class="form-group">
        <input type="text" class="form-control" placeholder="Category" name="icategory" required  />
        </div>

        <div class="form-group">
        <input type="file" class="form-control" placeholder="Picture" name="image" required  />
        </div>

        <hr />

        <div class="form-group">
            <button type="submit" class="btn btn-default" name="btn-postitem">
            <span class="glyphicon glyphicon-log-in"></span> &nbsp; Post Item
        </button> 

        </div> 

      </form>

    </div>

</div>

</body>
</html>

首先,您的图像列必须是BLOB类型

我们得到了字段
id
(int)、
image
(blob)和
image\u name
(varchar(64))

因此代码应该如下所示(假设ID始终为“1”,让我们使用这个mysql\u查询):

}

MySQL函数-它们已被弃用!使用或。您还应该考虑在磁盘上存储文件位置。使用像图像这样的大数据处理SQL表可能会有问题

此外,您的HTML应该如下所示:

<form action="insert_product.php" method="POST" enctype="multipart/form-data">
    <label>File: </label><input type="file" name="image" />
    <input type="submit" />
</form>

文件:
旁注:


在处理文件并将其存储为BLOB时,必须使用转义数据,否则将导致语法错误。

它现在可以工作,而不更改为使用BLOB。我想我会发布代码,这样如果其他人也这么做,可能会有所帮助。我现在要做的就是显示像e-bay一样的表格,并添加一些搜索选项

<?php
session_start();
if ( !isset($_SESSION['userSession']) || isset($_SESSION['userSession']) && empty($_SESSION['userSession']) ) {
    header("Location: index.php");
}

require_once 'dbconnect.php';

if(isset($_POST['btn-postitem'])) {

    $iname = $_POST['iname'];
    $idescription = $_POST['idescription'];
    $itype = $_POST['itype'];
    $icolour = $_POST['icolour'];
    $icategory = $_POST['icategory'];

    $uploadDir = "upload/"; 
    $fileName = $_FILES['image']['name'];
    $filePath = $uploadDir . $fileName;
    $username = $_SESSION['userName'];

    if(move_uploaded_file($_FILES['image']['tmp_name'],$filePath) ){

             echo "name: "; var_dump($iname);echo '<br>';
               echo "desc: "; var_dump($idescription);echo '<br>';
               echo "type: "; var_dump($itype);echo '<br>';
               echo "colour: "; var_dump($icolour);echo '<br>';
               echo "category: "; var_dump($icategory);echo '<br>';
               echo "filePath: "; var_dump($filePath);echo '<br>';
               echo "username: "; var_dump($username);echo '<br>';



        $query_image = "INSERT INTO item(iname,idescription,itype,icolour,icategory,image,username) VALUES('$iname','$idescription','$itype','$icolour','$icategory','$filePath','$username')";


                // insert the image into db
        if ($db1->query($query_image)) {
            echo "Stored in: " . "upload/" . $_FILES['image']['name'];
             }
        else{
            echo "File name not stored in database";
        }
                }
                else{
                        echo 'File not uploaded';
                    }
         }
$db1->close();
?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Post Item</title>
<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen">
<link href="bootstrap/css/bootstrap-theme.min.css" rel="stylesheet" media="screen"> 
<link rel="stylesheet" href="style.css" type="text/css" />

</head>
<body>

<div class="signin-form">

    <div class="container">


        <form class="form-signin" method="post" id="register-form" enctype="multipart/form-data">

        <h2 class="form-signin-heading">Post Item</h2><hr />

        <?php
        if (isset($msg)) {
            echo $msg;
        }
        ?>

        <div class="form-group">
        <input type="text" class="form-control" placeholder="Item Name" name="iname" required  />
        </div>

        <div class="form-group">
        <input type="text" class="form-control" placeholder="Description" name="idescription" required  />
        </div>

        <div class="form-group">
        <input type="text" class="form-control" placeholder="Type of Item" name="itype" required  />
        </div>

        <div class="form-group">
        <input type="text" class="form-control" placeholder="Item Colour" name="icolour" required  />
        </div>

        <div class="form-group">
        <input type="text" class="form-control" placeholder="Category" name="icategory" required  />
        </div>

        <div class="form-group">
        <input type="file" class="form-control" placeholder="Picture" name="image" required  />
        </div>

        <hr />

        <div class="form-group">
            <button type="submit" class="btn btn-default" name="btn-postitem">
            <span class="glyphicon glyphicon-log-in"></span> &nbsp; Post Item
        </button>
            <a href="index.php" class="btn btn-default" style="float:right;">Home</a>

        </div> 

      </form>

    </div>

</div>

</body>
</html>

您是否创建了“上传”目录?将此代码放在会话开始()之前。
行:
错误报告(E\u ALL);ini设置(“显示错误”,1)。现在你应该明白为什么你的代码不起作用了。考虑使用MySQL或更好的PDO,因为MySQL不支持PHP5.5.0,并且已被移除为PHP7.0.0。并使用准备好的语句来避免SQL注入。将字段
itemid
定义为
unsigned
AUTO_INCREMENT
。否则,它将在insert时接收值0。如果您像以前那样定义了
idate
,则不应在
insert
语句中包含该字段(以及
curdate()
值)。插入时将自动获取当前日期时间。否则,如果在sql语句中使用
curdate()
,则
idate
字段将接收值
0000-00-00:00:00
<?php
session_start();
if ( !isset($_SESSION['userSession']) || isset($_SESSION['userSession']) && empty($_SESSION['userSession']) ) {
    header("Location: index.php");
}

require_once 'dbconnect.php';

if(isset($_POST['btn-postitem'])) {

    $iname = $_POST['iname'];
    $idescription = $_POST['idescription'];
    $itype = $_POST['itype'];
    $icolour = $_POST['icolour'];
    $icategory = $_POST['icategory'];

    $uploadDir = "upload/"; 
    $fileName = $_FILES['image']['name'];
    $filePath = $uploadDir . $fileName;
    $username = $_SESSION['userName'];

    if(move_uploaded_file($_FILES['image']['tmp_name'],$filePath) ){

             echo "name: "; var_dump($iname);echo '<br>';
               echo "desc: "; var_dump($idescription);echo '<br>';
               echo "type: "; var_dump($itype);echo '<br>';
               echo "colour: "; var_dump($icolour);echo '<br>';
               echo "category: "; var_dump($icategory);echo '<br>';
               echo "filePath: "; var_dump($filePath);echo '<br>';
               echo "username: "; var_dump($username);echo '<br>';



        $query_image = "INSERT INTO item(iname,idescription,itype,icolour,icategory,image,username) VALUES('$iname','$idescription','$itype','$icolour','$icategory','$filePath','$username')";


                // insert the image into db
        if ($db1->query($query_image)) {
            echo "Stored in: " . "upload/" . $_FILES['image']['name'];
             }
        else{
            echo "File name not stored in database";
        }
                }
                else{
                        echo 'File not uploaded';
                    }
         }
$db1->close();
?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Post Item</title>
<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen">
<link href="bootstrap/css/bootstrap-theme.min.css" rel="stylesheet" media="screen"> 
<link rel="stylesheet" href="style.css" type="text/css" />

</head>
<body>

<div class="signin-form">

    <div class="container">


        <form class="form-signin" method="post" id="register-form" enctype="multipart/form-data">

        <h2 class="form-signin-heading">Post Item</h2><hr />

        <?php
        if (isset($msg)) {
            echo $msg;
        }
        ?>

        <div class="form-group">
        <input type="text" class="form-control" placeholder="Item Name" name="iname" required  />
        </div>

        <div class="form-group">
        <input type="text" class="form-control" placeholder="Description" name="idescription" required  />
        </div>

        <div class="form-group">
        <input type="text" class="form-control" placeholder="Type of Item" name="itype" required  />
        </div>

        <div class="form-group">
        <input type="text" class="form-control" placeholder="Item Colour" name="icolour" required  />
        </div>

        <div class="form-group">
        <input type="text" class="form-control" placeholder="Category" name="icategory" required  />
        </div>

        <div class="form-group">
        <input type="file" class="form-control" placeholder="Picture" name="image" required  />
        </div>

        <hr />

        <div class="form-group">
            <button type="submit" class="btn btn-default" name="btn-postitem">
            <span class="glyphicon glyphicon-log-in"></span> &nbsp; Post Item
        </button>
            <a href="index.php" class="btn btn-default" style="float:right;">Home</a>

        </div> 

      </form>

    </div>

</div>

</body>
</html>