0

私はPHPでこのSQLクエリを実行しています:

$sql2="INSERT into dd_submissions (customer_seq, dd_reference, sortcode, account_number, account_name, amount, bacs_code, invoice_no, title, initial, forename, surname, salutation_1, salutation_2, address_1, address_2, area, town, postscode, phone, mobile, email, notes) values ('".$customer["sequence"]."', '$data[0]', '$data[1]', '$data[2]', '$data[3]', '$data[4]', '$data[5]', '$data[6]', '$data[7]', '$data[8]', '$data[9]', '$data[10]', '$data[11]', '$data[12]', '$data[13]', '$data[14]', '$data[15]', '$data[16]', '$data[17]', '$data[18]', '$data[19]', '$data[20]', '$data[21]', '$data[22]')";
            echo $sql2.'<br><br>';
            $rs2=mysql_query($sql2,$conn) or die(mysql_error());

しかし、30行目でこのエラーが発生します($sql2="INSERT into.....)

Notice: Undefined offset: 22 in /home/integra/public_html/admin/billing/upload_direct_debit_form.php on line 30
INSERT into dd_submissions (customer_seq, dd_reference, sortcode, account_number, account_name, amount, bacs_code, invoice_no, title, initial, forename, surname, salutation_1, salutation_2, address_1, address_2, area, town, postscode, phone, mobile, email, notes) values ('53', 'VOIP/INTERNET', '555028', '60974222', 'DRAGON ENTERPRISE CENTRE', '941.58', '17', '5847619', 'Mr', 'D.', '', 'Belcher', 'Daniel', '', '28 Stephenson Road', '', '', 'Leigh-on-Sea', 'SS9 5LY', '01702 511222', '', 'daniel@dragonenterprisecentre.co.uk', '', '')
4

2 に答える 2

1

エラーではありません。PHP 構成で通知が有効になっているため、存在しないインデックスで配列の場所を参照しようとすると警告が表示されます。メッセージによると、$data[22] は配列に存在しません。このコード ブロックは、各配列オフセットが初期化されていると想定しないように記述する必要があります。デバッグの最善の策は、次のことを行うことです。

echo print_r($data);
于 2013-08-03T20:43:03.403 に答える
0

値ごとに SQL クエリをエスケープします。

固定クエリ:

$sql2="INSERT INTO
    dd_submissions
        (customer_seq, dd_reference, sortcode, account_number, account_name, amount, bacs_code, invoice_no, title, initial, forename, surname, salutation_1, salutation_2, address_1, address_2, area, town, postscode, phone, mobile, email, notes)
    VALUES ('".$customer['sequence']."', '".$data[0]."', '".$data[1]."', '".$data[2]."', '".$data[3]."', '".$data[4]."', '".$data[5]."', '".$data[6]."', '".$data[7]."', '".$data[8]."', '".$data[9]."', '".$data[10]."', '".$data[11]."', '".$data[12]."', '".$data[13]."', '".$data[14]."', '".$data[15]."', '".$data[16]."', '".$data[17]."', '".$data[18]."', '".$data[19]."', '".$data[20]."', '".$data[21]."', '".$data[22]."')";

また、通知は致命的な実行エラーではありません。致命的ではないエラーが表示されないようにするには、これをページの絶対トップに配置します。

error_reporting(E_ALL ^ E_NOTICE);

于 2013-08-03T20:42:52.747 に答える