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