我需要将所有表单详细信息插入数据库并将上传的图像保存在一个位置。我成功将文件上传到指定位置。但是表单详细信息不会插入数据库中。

这是pages.php中的代码

<?php
session_start();
if(!empty($_SESSION['uname']) && !empty($_SESSION['pswd'])) {
    include 'classes/insert.php';
    $db_con->dbcon();
    $db_con->insert_data();
    $target_path = "uploads/";
    $target_path = $target_path . basename( $_FILES['bg_img']['name']);
    if(move_uploaded_file($_FILES['bg_img']['tmp_name'], $target_path)) {
        echo "The file ".  basename( $_FILES['bg_img']['name']).
        " has been uploaded";
    } else {
        echo "There was an error uploading the file, please try again!";
    }
?>
<!doctype html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>New Page</title>
    </head>
    <body>
        <p>Add pages</p>
        <a href="logout.php">logout</a>
        <br /><br />
        <a href="dashboard.php">Dashboard</a>
        <br /><br />
        <form method="post" action="" enctype="multipart/form-data">
            <label>Page name</label>
            <input type="text" name="page_name" />
            <br />
            <br />
            <label>Page title</label>
            <input type="text" name="page_title" />
            <br />
            <br />
            <label>Page bg img</label>
            <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
            <input type="file" name="bg_img" />
            <br />
            <br />
            <label>Page content</label>
            <textarea name="page_content"></textarea>
            <br />
            <br />
            <input type="submit" value="Submit" name="submit" />
        </form>
    </body>
</html>
<?php } else {
    $home_loc = 'index.php';
    header ('Location:' .$home_loc);}
?>


这是insert.php中的代码

class db_con {
    public function dbcon() {
        $hostname = 'localhost';
        $username = 'root';
        $pswd     = 'admin';
        $dbname   = 'web';
        mysql_connect($hostname, $username, $pswd) or die('cudn\'t connect');
        mysql_select_db($dbname) or die('cudn\'t select db');
    }

    function insert_data() {
        $this->dbcon();
        if (isset($_POST['page_name']) && isset($_POST['page_title']) && isset($_POST['bg_img']) && isset($_POST['page_content'])) {
            $pg_name      = mysql_real_escape_string($_POST['page_name']);
            $pg_title     = mysql_real_escape_string($_POST['page_title']);
            $pg_img       = mysql_real_escape_string($_POST['bg_img']);
            $pg_content   = mysql_real_escape_string($_POST['page_content']);
            $insert_query = mysql_query("INSERT INTO pages (page_name, page_title, page_bg_img, page_content) VALUES ('" . $pg_name . "', '" . $pg_title . "', '" . $pg_img . "', '" . $pg_content . "')");
        }
    }
}

$db_con = new db_con();

最佳答案

好吧,有很多事情要考虑。


您正在将Javascript与PHP混合使用。

改变这个

  var $hostname = 'myhostname';





      $hostname = 'myhostname';


和别人一样。


您不应该针对您的情况开设许多课程。


用这个:

  class db_con{
       public function dbcon(){
          .........
         }
       function insert_data() {
           ...........
         }
     }



您没有调用insert_data()函数


这样称呼它:

   $insert = new insert;
   $insert->insert_data();



您应该像这样转义变量:

    $pg_title = mysql_real_escape_string($_POST['page_title']);

您应该切换到PDOMYSQLI


编辑:

尝试这个

    session_start();
   if(!empty($_SESSION['uname']) && !empty($_SESSION['pswd'])){
    include 'classes/insert.php';
   $db_con = new db_con();
   $db_con->dbcon();
   $db_con->insert_data();


编辑2:

要获取上传的文件,请使用$_FILES代替$_POST

    $pg_img       = $_FILES['bg_img'];


也改变这个

  and $_FILES['bg_img']['name'] != ''


代替

  && isset($_POST['bg_img'])

07-26 05:35
查看更多