Php 已将数据插入MySQL数据库,但字段为空

Php 已将数据插入MySQL数据库,但字段为空,php,mysql,mysqli,Php,Mysql,Mysqli,您好,我目前正在学习php,通过学习一些php教程,我遇到一个错误,通过网站插入数据库的数据在Mysql数据库中出现一个空行,而网站上没有显示任何内容。我正在使用phpmyadmin检查数据是否已插入。我在网站上搜索任何答案,但除了请求更改为“mysqli”之外,我没有找到任何答案,我已经这样做了。如果有人能帮助我,我将不胜感激。 非常感谢。下面是我的代码。 这是create_newsubject.php页面中的代码: <?php include("includes/functi

您好,我目前正在学习php,通过学习一些php教程,我遇到一个错误,通过网站插入数据库的数据在Mysql数据库中出现一个空行,而网站上没有显示任何内容。我正在使用phpmyadmin检查数据是否已插入。我在网站上搜索任何答案,但除了请求更改为“mysqli”之外,我没有找到任何答案,我已经这样做了。如果有人能帮助我,我将不胜感激。 非常感谢。下面是我的代码。

这是create_newsubject.php页面中的代码:

    <?php include("includes/functions.php"); ?>
<?php include("includes/connection.php"); ?>
<?php
$errors = array();
//form validation 
$required_fields = array('menu_name', 'position', 'visible');
foreach($required_fields as $fieldname) {
    if (!isset($_POST[$fieldname]) || empty($_POST[$fieldname])) {
            $errors[] = $fieldname;
        }
    }

$fields_with_lengths = array('menu_name' => 30);
foreach($fields_with_lengths as $fieldname => $maxlength) {
    if (strlen(trim(mysqli_prep($_POST[$fieldname]))) > $maxlength) {
$errors[] = $fieldname; }   
    }   




if (!empty($errors)) {
        header("Location: new_subject.php");
        exit;
}
?>
<?php 
    $menu_name = mysqli_prep($_POST['menu_name']);
    $position = mysqli_prep($_POST['position']);  
    $visible = mysqli_prep($_POST['visible']);
?>
<?php
    $query = "INSERT INTO subjects (
                menu_name, position, visible
            ) VALUES (
                '{$menu_name}', '{$position}', '{$visible}'
            )";
            $result = mysqli_query($connection, $query);
    if ($result) {
            //Success
            header("Location: content.php");
            exit;
    } else {
            //Display error message
            echo "<p>Subject creation failed </p>";
            echo "<p>" . mysqli_error($connection) . "</p>";
    }
?>
<?php mysqli_close($connection); ?>

**


您确实应该使用预先准备好的语句,但代码中的一个问题是使用
mysqli\u real\u escape\u string
。如中所示,第一个参数是数据库连接。

HTML中的表单在哪里?在插入数据库之前,您确定您的数据库中有数据吗?尝试打印($\u POST);;事先。我的代码是分开的。我使用一个不同的表单,其中包含我的HTML和另一个具有我的数据库连接的表单,其中包含数据库的密码和数据库名称。好的,但在插入到数据库之前尝试显示数组$\u POST。你可以确定你有各种各样的数据。是的,它在一个完整的白色页面上显示了我想输入数据库的数据。你能给我们展示一下你的数据库结构吗?事实上,我进一步分离了我的代码,在另一个名为connect.php的页面上完成了数据库连接。连接很好;我从表单发送的值在phpmyadmin数据库中显示为空白输入……。@BeachSamurai可能是,但这是:
$value=mysqli\u real\u escape\u string($value)
将导致错误和/或清除您的值,因为第一个参数必须是数据库连接。这将如何尝试回答此问题?这似乎是一条评论。我仍在忙着。我一做完sry就会回来……我发布了连接到数据库的代码以及html代码。@FreshPrinceOfSO如果您尝试插入
mysqli_real_escape_string($value)的返回值,这似乎是问题的原因
输入数据库,该函数返回错误/警告,您的值可能为空。请注意,
mysqli_prep()
会为每个
POST
值调用。
    <?php
    function mysqli_prep( $value ) {
            $magic_quotes_active = get_magic_quotes_gpc();
    $new_enough_php = function_exists("mysqli_real_escape_string");
    //i.e. php >= v4.3.0
            if( $new_enough_php ) { //php v4.3.0  or higher
                //undo any magic quote effects so mysql can do the work
        if( $magic_quotes_active ) {$value = stripslashes( $value ); }
            $value = mysqli_real_escape_string( $value );
        } else { //before php v4.3.0
            // if magic quotes arnt already on then add slashes manually
        if(!$magic_quotes_active) { $value = addslashes( $value ); }
           //if magic quotes are active then the slashes already exist
         }

        return $value;

    }
    function redirect_to( $location = NULL ) {
        if ($location != NULL) {
            header("Location: {$location}");
            exit;
        }
    }
    function confirm_query($result_set) {
            global $connection;
            if(!$result_set) {
                    die("Database query failed: " . 
                    mysqli_error($connection));
            }

    }
    function get_all_subjects() {
        global $connection;
        $query = "SELECT * 
                 FROM subjects
                 ORDER BY position ASC";
        $subject_set = mysqli_query($connection, $query);
        confirm_query($subject_set);
        return $subject_set;

    }
    function get_all_pages($subject_id) {
        global $connection;
        $query = "SELECT * 
                  FROM pages 
                  WHERE subject_id = {$subject_id}
                  ORDER BY position ASC";
        $page_set = mysqli_query($connection, $query);
        confirm_query($page_set);
        return $page_set;
    }
    function get_subject_by_id($subject_id) {
        global $connection;
        $query = "SELECT * ";
        $query.= "FROM subjects "; 
        $query.= " WHERE id='" . $subject_id ."' ";
        $query .= " LIMIT 1";       
        $result_set = mysqli_query($connection, $query);
        confirm_query($result_set);
        if ($subject = mysqli_fetch_array($result_set)) {
            return $subject;
    } else {
            return NULL;
    }
}
    function get_page_by_id($page_id) {
            global $connection;
            $query = "SELECT * ";
            $query .= " FROM pages ";
            $query .= " WHERE id= '" . $page_id ."' ";
            $query .= " LIMIT 1";
            $result_set = mysqli_query($connection, $query);
            confirm_query($result_set);
            if ($page = mysqli_fetch_array($result_set)) {
                return $page;
            } else {
                return NULL;
            }

    }
    function find_selected_page() {
        global $sel_subject;
        global $sel_page;
      if (isset($_GET['subj'])) {
            $sel_subject = get_subject_by_id($_GET['subj']);
            $sel_page = NULL;
    } elseif (isset($_GET['page'])) {
            $sel_subject = NULL;
            $sel_page = get_page_by_id($_GET['page']);
    } else {
        $sel_subject = NULL;
        $sel_page = NULL;
    }
}
    function navigation($sel_subject, $sel_page){
        $output = "<ul class=\"subjects\">";
        //3.Perform database query
        $subject_set = get_all_subjects();          
        //4. Use returned data
        while ($subject = mysqli_fetch_array($subject_set)) {
                $output .= "<li";
                if ($subject["id"] == $sel_subj['id']) 
                { $output .= " class=\"selected\""; }
                $output .= "><a href=\"edit_subject.php?subj=" . 
                urlencode($subject["id"]) . "\">
                {$subject["menu_name"]}</a></li>";
                $page_set = get_all_pages($subject["id"]);

        $output .= "<ul class=\"pages\">";
        while ($page = mysqli_fetch_array($page_set)) {
                $output .= "<li";
                if ($page["id"] == $sel_page['id']) 
                { $output .= " class=\"selected\""; }
                $output .= "><a href=\"content.php?page=" . 
                urlencode($page["id"]) . "\">{$page["menu_name"]}
                </a></li>";
        }
        $output .= "</ul>"; 
        }       
        $output .= "</ul>";
        return $output;

    }
?>
<?php
//1. Create database connection
$connection = mysqli_connect("localhost","root","Password");
if (!$connection) {
    die("Database connection failed: " . mysqli_error($connection));        
}
//2.Select a database to use
$db_select = mysqli_select_db($connection, "widget_corp");
if (!$db_select) {
    die("Database selection failed:" . mysqli_error($connection));
}
?>
<?php include("includes/connection.php");?>
<?php include("includes/header.php");?>
<?php include("includes/functions.php");?>
<?php find_selected_page();?>

<table id="structure">
    <tr>
        <td id="navigation">
            <?php echo navigation($sel_subject, $sel_page); ?>

        </td>
        <td id="page">
            <h2>Add Subject</h2>
            <form action="create_newsubject.php" method="post">
    <p>Subject name: <input type="text" name="menu_name" value=""
    id="menu_name" /></p>
    <p> Position:
        <select name="position">    
            <?php
                $subject_set = get_all_subjects();
                $subject_count = mysqli_num_rows($subject_set);
                //subject count +1 because we are adding a subject
                for($count=1; $count <= $subject_count+1; $count++) {
                    echo "<option value=\"{$count}\">{$count}</option>";
                }
            ?>
        </select>   
    </p>
    <p>Visible:
       <input type="radio" name="visible" value"0" /> No
       &nbsp;
       <input type="radio" name="visible" value="1" /> Yes
    </p>
    <input type="submit" value="Add Subject" /> 
</form>
            <br />
            <a href="content.php">Cancel</a>
        </td>
    </tr>
</table>
<?php require("includes/footer.php");?>