2012-04-24 113 views
1

我有这个页面从html表格插入数据。没有错误显示,但也没有插入数据。这里是我给出的代码。mysql插入查询不起作用

<?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这四个字段都不是NULL。其余都是空允许的。

+1

会帮助我们/您在INSERT请求已被填充后打印其内容。 – 2012-04-24 17:14:01

+1

将它放置在脚本'error_reporting(1);'的顶部并检查它是否给出任何错误 – 2012-04-24 17:14:19

+2

我的头部只是试图读取它而感到痛苦。 – luckytaxi 2012-04-24 17:17:52

回答

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

?> 

提示:

  1. 停止使用$ _REQUEST。可以使用$ _GET或$ _POST
  2. 避免像你一样使用大型线条。您无法快速找到错误。
  3. 使用数组编写较少的代码。
  4. 使用array_walk函数将函数映射到数组中的每个条目。
  5. 使您的代码甜蜜的阅读,更容易调试
  6. 变量一样,$_REQUEST['$Blabla']不会起作用,因为使用“解析变量不工作,请使用”,而不是像$_REQUEST["{$Blabla}"]。但是,避免因为PHP需要解析意味着更多的权力马需要,使用$_REQUEST[$Blabla]代替
  7. 在开发,我建议以下行的脚本的顶部:。

    error_reporting(-1); 
    ini_set('display_errors', 'On'); 
    

    它会显示所有的错误连一个都没有真的是错误,它会帮助你写出完美的代码以及可在任何地方使用的标准代码。

  8. 对于每个$ _POST,$ _GET,$ _REQUEST,$ _FILES等使用函数isset,因为它会产生错误。请记住,每个错误加载页面的时间加倍。试着创建一个页面,让我们说10000行没有错误,平均可能是0.01秒。每行有错误,可能需要0.5秒。注意一下。
+0

鹰的眼睛=) – Gerep 2012-04-24 17:37:42

+0

@Gerep谢谢,我只是花时间去做它。默认情况下,这应该在编写代码时完成,因此调试非常简单,而且速度更快。此外,你可以避免像失踪这样的愚蠢错误。 )(或者别的什么),但是,我会推荐使用PDO,写得更安全,更快速,也需要更少的调试。 – 2012-04-24 17:46:41

+0

谢谢@DavidBélanger。你的每个提示都是对我的教训,但是我没有完成,警告:mysql_real_escape_string()期望参数2是资源,在第59行中的C:\ wamp \ www \ HCP \ login.php中给出的整数“? – 2012-04-24 18:48:42

0

具有u试图改变

if($_REQUEST['btnUserSubmit']) 

if (isset($_POST['btnUserSubmit'])) 

编辑!

我想想也是,在你的INSERT查询结束

'".mysql_real_escape_string($_REQUEST['rdGender'])."');"; 

U可以替换为:

'".mysql_real_escape_string($_REQUEST['rdGender'])."')"; // Lose the ; after "') 

你为什么不只是使用$ _ POST [];而不是$ _REQUEST []; ?

+0

The;最后是可选的。请参阅:http://dev.mysql.com/doc/refman/5.0/en/entering-queries.html'命令通常由一个SQL语句和一个分号组成。 (有些例外可以省略分号,前面提到的QUIT就是其中之一,以后我们会去找其他人。)# – 2012-04-24 17:59:35

0

尝试消除在生产线末端的第一个分号,所以它读取这样:

...($_REQUEST['rdGender'])."')";