2016-11-28 9 views
0

私は挿入値に問題があります。複数のデータを挿入することはできません。しかし、テーブルのデータ値を見るとN5のように見えますが、 N7とN9がありません。複数のデータを挿入することはできません

"N4" 示すエラー; "ファラBTモハメド"; 4; "PEREMPUAN"、 "C5" "N6"; "Maisarah"; 2; "PEREMPUAN"、 "C2" "N8";」 haikal「; 4;」LELAKI「」C2" データベース作成者とみなされる 『注文を

Warning: pg_query():Query failed: ERROR: insert or update on table "nominee" violets foreign key constraint "custFK" DETAIL: Key(cust_id)=(C2) is not present in table "customer".

<?php 
$connection = pg_connect ("user = postgres password = syafiqah26 port = 5433 dbname = bengkel2 host = localhost"); 
$number = count($_POST["name"]); 
$number1 = count($_POST["gender"]); 
$number2 = count($_POST["age"]); 
$number3 = count($_POST["hidden"]); 

if(($number > 0)&&($number1>0)&&($number2>0)&&($number3>0)) 
{ 
    for($i=0,$j=0,$k=0,$l=0; $i<$number && $j<$number1 && $k<$number2 && $l<$number3; $i++,$j++,$k++,$l++) 
    { 
     if((trim($_POST["name"][$i] != ''))&&(trim($_POST["gender"][$j] != ''))&&(trim($_POST["age"][$k] != ''))&&(trim($_POST["hidden"][$l] !=''))) 
     { 
      $sql = "INSERT INTO nominee(name,gender,age,cust_Id) VALUES('".pg_escape_string($connection, $_POST["name"][$i])."','".pg_escape_string($connection, $_POST["gender"][$j])."','".pg_escape_string($connection, $_POST["age"][$k])."','".pg_escape_string($connection, $_POST["hidden"][$l])."')"; 
      pg_query($connection, $sql); 

     } 
    } 
    echo "Data Inserted"; 


} 
else 
{ 
    echo "Please Enter Name"; 
} 



    pg_close($connection); 
?> 
+1

[Little Bobby](http://bobby-tables.com/)によると*** [あなたのスクリプトはSQLインジェクション攻撃の危険にさらされています。](http://stackoverflow.com/questions/60174/how- can-i-prevent-sql-injection-in-php)***。 [文字列をエスケープする](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)でも安全ではありません! –

+0

@Jay Blanchardトピック開始者がmysqlの代わりにpostgresqlを使用しています –

+0

@RaymondNijlandに関係なく、概念は同じです。コメントは –

答えて

2

外部キーを維持しようとするデータベース制約があります』。この場合、お客様テーブルにはない「候補」を持つことはできません。

ユーザーテーブルの候補者のIDが正しいこと、または新しいユーザーの場合はを顧客に挿入してから、顧客のIDを取得して候補者を挿入します。

+0

あなたは顧客(親テーブル)を候補者に挿入してから挿入する必要がありますか?そうであれば、私は顧客に挿入してから候補者に挿入します。 – SySyBy

+0

私は、顧客テーブルにない顧客を候補テーブルに挿入できないことを意味します。顧客を追加します。 custIdを取得します。候補を追加する(そのcustIdを持つ)。 – WEBjuju

+0

もちろん外来キーを落とすことができますが、まず自分自身に質問しなければなりません - なぜこの外来キーの "制約"が最初にテーブルに置かれたのですか?** – WEBjuju

関連する問題