1

私はこのページに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、この 4 つのフィールドのみが NULL ではありません。残りは Null が許可されます。

4

3 に答える 3

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を使用します。
  9. エラーが発生するたびに、ページの読み込みにかかる時間が2倍になることを忘れないでください。たとえば、エラーのない10000行のページを作成してみてください。平均は、0.01秒になる可能性があります。各行にエラーがある場合、0.5秒かかる場合があります。それを見てください。
于 2012-04-24T17:30:24.857 に答える
0

変えてみましたか

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[] の代わりに; ?

于 2012-04-24T17:20:06.137 に答える
0

次のように、行末の最初のセミコロンを削除してみてください。

...($_REQUEST['rdGender'])."')";
于 2012-04-24T17:23:31.650 に答える