wordpress 如何将带有文本字段的图像插入到数据库中的自定义表中?

yhuiod9q  于 2023-02-11  发布在  WordPress
关注(0)|答案(1)|浏览(136)

如何在数据库中插入带有文本字段的图像自定义表?

<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();

========输出==========

tuwxkamq

tuwxkamq1#

您的代码中有一些错误,不允许将您的图像上传到主题文件夹。
下面提供的表单处理和文件上传不建议用于WordPress。
你可以使用一些提示从WordPress的法典,如wp_handle_upload()等,也可以看看这个答案。
1.代码的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();
  • PHP超级全局是$_FILES
  • bloginfo()打印值,但我们需要得到它(不是打印)。因此,我们可以使用get_bloginfo()代替,或其他相关函数。我使用get_template_directory()函数。
  • 这文件夹命名'pic'应该是创建的,因为move_uploaded_file()将不创建文件夹,如果它不存在
  • $img2 =time().$img;本器件的附注:将图像命名为1545769627_name.jpg会更好,您代码将创建类似1545769627name.jpg的图像名称。

另外,作为另一个注意事项。在你的代码中有很多安全漏洞。我不建议你在除localhost之外的任何其他项目中使用它。
其他部分应该按预期工作。

相关问题