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