使用PHP将文件路径名保存到mySQL数据库
很抱歉,如果这个问题真的很冗长,但我希望尽可能详细,以期得到我的问题的答案 基本上,我有一个多部分表单,我想添加文件上传功能。我创建了表单,一个用于将图像保存到目录的函数,还有一个用于将表单值发布到数据库的脚本。我的问题是,在提交表单时,我将图像存储在我希望的位置,但没有任何表单值被发送到数据库。我认为我的问题是,我试图将新路径名存储为一个变量,然后在POST脚本中调用该变量,但我认为这是错误的 引发的错误是: 注意:未定义索引:第13行C:\xampp\htdocs\web\u design\u cms\create\u wireframe.php中的图像 以下是表单的代码:使用PHP将文件路径名保存到mySQL数据库,php,html,mysql,forms,file-upload,Php,Html,Mysql,Forms,File Upload,很抱歉,如果这个问题真的很冗长,但我希望尽可能详细,以期得到我的问题的答案 基本上,我有一个多部分表单,我想添加文件上传功能。我创建了表单,一个用于将图像保存到目录的函数,还有一个用于将表单值发布到数据库的脚本。我的问题是,在提交表单时,我将图像存储在我希望的位置,但没有任何表单值被发送到数据库。我认为我的问题是,我试图将新路径名存储为一个变量,然后在POST脚本中调用该变量,但我认为这是错误的 引发的错误是: 注意:未定义索引:第13行C:\xampp\htdocs\web\u design\
<form action="create_wireframe.php" method="post" enctype="multipart/form-data">
<!-- page_title -->
<p>
<label>Title:</label><br/>
<input type="text" class="text small" name="wireframe_title" id="wireframe_title" value="" />
<span class="note">*required</span>
</p>
<!-- page_meta_title -->
<p>
<label>Browser Title:</label><br/>
<input type="text" class="text small" name="browser_title" id="browser_title" value="" >
<span class="note">*required</span>
</p>
<!-- url_key -->
<p>
<label>Permanent Link:</label><br/>
<input type="text" class="text small" name="url_key" id="url_key" value=""/>
</p>
<!-- page_image -->
<div style="float:left" >
<!-- wireframe_type -->
<p>
<label>Type:</label><br/>
<select name="wireframe_type" id="wireframe_type" class="styled" style="width:240px">
<option value="design" > Design Draft</option>
<option value="wireframe" selected > Wireframe</option>
</select>
<span class="note">*required</span>
</p>
</div>
<div style="clear:both"></div>
<div class="message info"><p>
Allowed file types for upload: jpg,jpeg,gif,png.<br/>
Max file size: 10Mb<br/>
Picture size: 4096x4096 px
</p></div>
<p>
<label>Upload Image:</label><br/>
<input type="file" name="page_main_image" id="page_main_image" value="" />
</p>
<!-- page_bg_color -->
<p>
<label>Color:</label><br/>
<input type="text" class="text small" maxlength="6" size="6" style="width:60px" id="colorpickerField" name="page_bg_color" value="ffffff" />
<span id="colorSelector" style="background-color:#ffffff;padding:7px 10px;"> </span>
<span class="note">*required</span>
</p>
<p>
<input type="submit" class="submit small" value="Save" name="submit" />
</p>
</form>
标题:
*必需的
浏览器标题:
*必需的
永久链接:
类型:
设计草案
线框
*必需的
允许上载的文件类型:jpg、jpeg、gif、png。
最大文件大小:10Mb
图片大小:4096x4096像素
上传图像:
颜色:
*必需的
下面是处理表单数据的php脚本“create_wireframe.php”:
<?php require_once("includes/db_connection.php"); ?>
<?php require_once("includes/functions.php"); ?>
<?php
if (isset($_POST['submit'])) {
//Process the form
$image = upload_file();
$wireframe_title = mysql_prep($_POST["wireframe_title"]);
$browser_title = $_POST["browser_title"];
$url_key = $_POST["url_key"];
$wireframe_type = $_POST["wireframe_type"];
$image = $_POST["page_main_image"];
$page_bg_color = $_POST ["page_bg_color"];
$query = "INSERT INTO wireframes (";
$query .= " wireframe_title, browser_title, url_key, wireframe_type, page_main_image, page_bg_color";
$query .= " ) VALUES (";
$query .= " '{$wireframe_title}', '{$browser_title}', '{$url_key}', '{$wireframe_type}', '{$image}', '{$page_bg_color}' ";
$query .= ")";
echo $query;
try { $result = mysqli_query($connection, $query);
} catch (Exception $e) {
return 'Caught exception: '+ $e->getMessage()+ "\n";
}
//Test if there was a query error
if ($result) {
//Success
// would normally use a redirect ie redirect_to("somepage.php");
//$message = "Subject created.";
redirect_to("wireframes.php");
}else {
//failure
//$message = "Subject creation failed.";
//redirect_to("add_project.php");
echo $query;
}
} else {
// This is probably a GET request
redirect_to("add_edit_wireframe.php");
}
?>
<?php
// Close database connection
if(isset($connection)){ mysqli_close($connection); }
?>
在处理上载的文件(如图像)时,需要使用$\u文件而不是$\u POST来访问数据
看看这个
编辑
你需要改变主要的逻辑
$image = upload_file(); //Good
$wireframe_title = mysql_prep($_POST["wireframe_title"]);
$browser_title = $_POST["browser_title"];
$url_key = $_POST["url_key"];
$wireframe_type = $_POST["wireframe_type"];
//Delete this, you're throwing out the value from upload_file()
$image = $_POST["page_main_image"];
在处理上载的文件(如图像)时,需要使用$\u文件而不是$\u POST来访问数据
看看这个
编辑
你需要改变主要的逻辑
$image = upload_file(); //Good
$wireframe_title = mysql_prep($_POST["wireframe_title"]);
$browser_title = $_POST["browser_title"];
$url_key = $_POST["url_key"];
$wireframe_type = $_POST["wireframe_type"];
//Delete this, you're throwing out the value from upload_file()
$image = $_POST["page_main_image"];
在处理上载的文件(如图像)时,需要使用$\u文件而不是$\u POST来访问数据
看看这个
编辑
你需要改变主要的逻辑
$image = upload_file(); //Good
$wireframe_title = mysql_prep($_POST["wireframe_title"]);
$browser_title = $_POST["browser_title"];
$url_key = $_POST["url_key"];
$wireframe_type = $_POST["wireframe_type"];
//Delete this, you're throwing out the value from upload_file()
$image = $_POST["page_main_image"];
在处理上载的文件(如图像)时,需要使用$\u文件而不是$\u POST来访问数据
看看这个
编辑
你需要改变主要的逻辑
$image = upload_file(); //Good
$wireframe_title = mysql_prep($_POST["wireframe_title"]);
$browser_title = $_POST["browser_title"];
$url_key = $_POST["url_key"];
$wireframe_type = $_POST["wireframe_type"];
//Delete this, you're throwing out the value from upload_file()
$image = $_POST["page_main_image"];
在处理文件存储的函数中,我使用了super-global$\文件,这一切都很正常。问题是我想获取存储图像的路径名并将其发布到数据库中。我曾尝试将其存储在变量“$image”中,但这似乎不起作用。看起来您设置了$image=upload\u file()
,然后立即丢弃该值并设置$image=$\u POST[“page\u main\u image”]
。也许你把第二部分放在那里是偶然的?这就是我出错的地方,我不知道我该怎么做?在函数结束时,我返回“$image”,我希望它包含上传的当前图像的路径名,然后我需要获取它并将其发送到数据库。我以为我就是这样做的?显然不是!两件事。我不知道你为什么要写$image=“{$\u文件['page\u main\u image']['name']}”
而不是只说$image=$\u FILES['page\u main\u image']['name']代码>。但这并不重要。我的意思是你需要删除这一行:$image=$\u POST[“page\u main\u image”]代码>。我已经相应地更新了我的答案。感谢它修复了错误,数据仍然没有发布到数据库。我认为这可能是一个与表的结构有关的错误,但是,如果我解决了这个问题,它解决了问题,我会将您的答案标记为正确!谢谢你的帮助!:)在处理文件存储的函数中,我使用了super-global$\文件,这一切都很正常。问题是我想获取存储图像的路径名并将其发布到数据库中。我曾尝试将其存储在变量“$image”中,但这似乎不起作用。看起来您设置了$image=upload\u file()
,然后立即丢弃该值并设置$image=$\u POST[“page\u main\u image”]
。也许你把第二部分放在那里是偶然的?这就是我出错的地方,我不知道我该怎么做?在函数结束时,我返回“$image”,我希望它包含上传的当前图像的路径名,然后我需要获取它并将其发送到数据库。我以为我就是这样做的?显然不是!两件事。我不知道你为什么要写$image=“{$\u文件['page\u main\u image']['name']}”
而不是只说$image=$\u FILES['page\u main\u image']['name']代码>。但这并不重要。我的意思是你需要删除这一行:$image=$\u POST[“page\u main\u image”]代码>。我已经相应地更新了我的答案。感谢它修复了错误,数据仍然没有发布到数据库。我认为这可能是一个与表的结构有关的错误,但是,如果我解决了这个问题,它解决了问题,我会将您的答案标记为正确!谢谢你的帮助!:)在处理文件存储的函数中,我使用了super-global$\文件,这一切都很正常。问题是我想获取存储图像的路径名并将其发布到数据库中。我曾尝试将其存储在变量“$image”中,但这似乎不起作用