如何在数据库中使用文本字段自定义表插入图像?
<form method = "post" action = "#">
<label for="name">Name</label>
<input type="text" name="name"/><br>
<label for="description">Description</label>
<input type="text" name="description"/><br>
<label for="phone">phone</label><br>
<input type="text" name="phone"/><br>
<label for="name">Image</label>
<input type="file" name="image"><br>
<input type="submit" value="Submit" name="sub_submit"/>
</form>
<?php
function insert_query() {
$name = $_POST['name'];
$description = $_POST['description'];
$phone = $_POST['phone'];
$img = $_FILE['image']['name'];
$img2 =time().$img;
$folder = "echo bloginfo('template_url')/pic/".$img2;
$tmp = $_FILE['image']['tmp_name'];
move_uploaded_file($tmp, $folder);
global $wpdb;
$table_name = "wp_insert";
$sss = $wpdb->insert($table_name, array('name' => $name, 'description' => $description, 'phone' => $phone, 'image' => $img2 ),array( '%s', '%s', '%d', '%s'));
if($sss)
{
echo "Done";
}
else
{
echo " Not Done";
}
}
if( isset($_POST['sub_submit']) ) insert_query();
========= OutPut ===========
答案 0 :(得分:1)
您的代码中有一些错误,不允许您将图片上传到主题文件夹中。
不建议将下面提供的表单处理和文件上传用于WordPress。
您可以使用WordPress Codex的一些技巧,例如wp_handle_upload()
等。此外,还可以查看this answer。
您的代码的HTML部分应为:
<form method = "post" enctype="multipart/form-data">
<label for="name">Name</label>
<input type="text" name="name"/><br>
<label for="description">Description</label>
<input type="text" name="description"/><br>
<label for="phone">phone</label><br>
<input type="text" name="phone"/><br>
<label for="name">Image</label>
<input type="file" name="image"><br>
<input type="submit" value="Submit" name="sub_submit"/>
</form>
我们删除了action
属性,因为不知道应该由哪个文件处理。另外,添加了enctype="multipart/form-data"
属性=>值,用于处理文件上传。
PHP部分应类似于:
function insert_query() {
$name = $_POST['name'];
$description = $_POST['description'];
$phone = $_POST['phone'];
$img = $_FILES['image']['name'];
$img2 =time().$img;
$folder = get_template_directory()."/pic/".$img2;
$tmp = $_FILES['image']['tmp_name'];
move_uploaded_file($tmp, $folder);
global $wpdb;
$table_name = "wp_insert";
$sss = $wpdb->insert($table_name, array('name' => $name, 'description' => $description, 'phone' => $phone, 'image' => $img2 ),array( '%s', '%s', '%d', '%s'));
if($sss)
{
echo "Done";
}
else
{
echo " Not Done";
}
}
if( isset($_POST['sub_submit']) ) insert_query();
$_FILES
bloginfo()
打印值,但是我们需要获取它(不打印)。因此,我们可以改用get_bloginfo()
或其他相关功能。我使用了get_template_directory()
函数。move_uploaded_file()
不会创建文件夹(如果不存在)$img2 =time().$img;
这部分的旁注:将图像名称命名为1545769627_name.jpg
会更好。您的代码将创建图像名称,例如1545769627name.jpg
。另外,请注意。您的代码中有很多安全漏洞。我不建议您将其用于localhost之外的任何其他项目。
其他部分应该可以正常工作。