我有这个页面从html表单插入数据。没有显示错误,但也没有插入数据。这是我的代码。
<?php
mysql_connect("localhost","root","");
mysql_select_db("hcp");
$queryUserType = "select * from user_type";
$resultUserType = mysql_query($queryUserType) or die(mysql_error());
$queryTitle = "select * from name_titles";
$resultTitle = mysql_query($queryTitle) or die(mysql_error());
$time = time();
$date = date("d-m-y");
$nowDateTime=$time.$date;
if($_REQUEST['btnUserSubmit'])
{
$queryInsertUser="INSERT INTO users (`title_id`, `first_name`, `last_name`, `email`, `utid`, `residence_address1`, `residence_address2`, `residence_city`, `residence_state`, `residence_country`, `residence_zipcode`, `phone_no`, `username`, `password`, `created`, `date_of_birth`, `gender` ) VALUES ('".mysql_real_escape_string($_REQUEST['$rowTitle[0]'])."', '".mysql_real_escape_string($_REQUEST['txtFirstName'])."', '".mysql_real_escape_string($_REQUEST['txtLastName'])."', '".mysql_real_escape_string($_REQUEST['txtEmail'])."', '".mysql_real_escape_string($_REQUEST['rowUserType[0]'])."', '".mysql_real_escape_string($_REQUEST['txtAddressLine1'])."', '".mysql_real_escape_string($_REQUEST['txtAddressLine2'])."', '".mysql_real_escape_string($_REQUEST['txtCity'])."', '" .mysql_real_escape_string($_REQUEST['txtState'])."', '".mysql_real_escape_string($_REQUEST['txtCountry'])."', '".mysql_real_escape_string($_REQUEST['txtPhone'])."', '".mysql_real_escape_string($_REQUEST['txtUserName'])."', '".mysql_real_escape_string($_REQUEST['txtUserPassword'])."', '".$nowDateTime."', '".mysql_real_escape_string($_REQUEST['txtdateofbirth'])."', '".mysql_real_escape_string($_REQUEST['rdGender'])."');";
$resultinsert=mysql_query($queryInsertUser) or die(mysql_error());
}
?>
我在页面重定向时没有任何问题。表单验证仍然存在。在此表中,只有email,utid,username,password这四个字段都是NOT NULL。剩下的是Null允许的。
答案 0 :(得分:7)
如你所见,你遗失的字段11,见下文:
<?php
$QueryCol = array('title_id', // Field 1
'first_name', // Field 2
'last_name', // Field 3
'email', // Field 4
'utid', // Field 5
'residence_address1', // Field 6
'residence_address2', // Field 7
'residence_city', // Field 8
'residence_state', // Field 9
'residence_country', // Field 10
'residence_zipcode', // Field 11
'phone_no', // Field 12
'username', // Field 13
'password', // Field 14
'created', // Field 15
'date_of_birth', // Field 16
'gender'); // Field 17
$QueryData = array((isset($_REQUEST[$rowTitle[0]]) ? $_REQUEST[$rowTitle[0]] : null), // Field 1
(isset($_REQUEST['txtFirstName']) ? $_REQUEST['txtFirstName'] : null), // Field 2
(isset($_REQUEST['txtLastName']) ? $_REQUEST['txtLastName'] : null), // Field 3
(isset($_REQUEST['txtEmail']) ? $_REQUEST['txtEmail'] : null), // Field 4
(isset($_REQUEST[$rowUserType[0]]) ? $_REQUEST[$rowUserType[0]] : null), // Field 5
(isset($_REQUEST['txtAddressLine1']) ? $_REQUEST['txtAddressLine1'] : null), // Field 6
(isset($_REQUEST['txtAddressLine2']) ? $_REQUEST['txtAddressLine2'] : null), // Field 7
(isset($_REQUEST['txtCity']) ? $_REQUEST['txtCity'] : null), // Field 8
(isset($_REQUEST['txtState']) ? $_REQUEST['txtState'] : null), // Field 9
(isset($_REQUEST['txtCountry']) ? $_REQUEST['txtCountry'] : null), // Field 10
// Field 11
(isset($_REQUEST['txtPhone']) ? $_REQUEST['txtPhone'] : null), // Field 12
(isset($_REQUEST['txtUserName']) ? $_REQUEST['txtUserName'] : null), // Field 13
(isset($_REQUEST['txtUserPassword']) ? $_REQUEST['txtUserPassword'] : null), // Field 14
$nowDateTime, // Field 15
(isset($_REQUEST['txtdateofbirth']) ? $_REQUEST['txtdateofbirth'] : null), // Field 16
(isset($_REQUEST['rdGender']) ? $_REQUEST['rdGender'] : null); // Field 17
foreach($QueryData as $Key => $Value){
$QueryData[$Key] = mysql_real_escape_string($Value);
}
$QueryInsertUser = 'INSERT INTO users (`'.implode('`, `', $QueryCol).'`)'.
'VALUES ("'.implode('", "', $QueryData).'")';
$resultinsert = mysql_query($QueryInsertUser)
or die(mysql_error());
?>
提示:
$_REQUEST['$Blabla']
那样的变量不起作用,因为使用'不适用于解析变量,而是使用“而不是$_REQUEST["{$Blabla}"]
。但是,请避免因为PHP需要解析意味着更多权力马需要,请改用$_REQUEST[$Blabla]
。在开发过程中,我建议在脚本顶部添加以下几行:
error_reporting(-1);
ini_set('display_errors', 'On');
它将显示所有错误。即使是那些并非真正错误的人。它将帮助您编写完美的代码和标准代码,无处不在。
答案 1 :(得分:0)
您是否尝试过更改
if($_REQUEST['btnUserSubmit'])
到
if (isset($_POST['btnUserSubmit']))
EDIT!
我想也是在你的INSERT查询结束时
'".mysql_real_escape_string($_REQUEST['rdGender'])."');";
U可以替换为:
'".mysql_real_escape_string($_REQUEST['rdGender'])."')"; // Lose the ; after "')
为什么不使用$ _POST [];而不是$ _REQUEST []; ?
答案 2 :(得分:0)
尝试删除该行末尾的第一个分号,使其读取为:
...($_REQUEST['rdGender'])."')";