2012-04-17 23 views
0

私は "test"というデータベースを作成し、 "biodata"というテーブルを作成しました。私はbiodataテーブルに "名前" "年齢"と "説明"と呼ばれる3つの列を作成しました。今、配列の結果を各列に格納する方法。PHPを使用してmysqlに多次元配列を格納する方法

以下

あなたのSQLクエリは、単に間違った場所にある

<?php 

    $ip = "localhost"; 
    $username = "root"; 
    $password = ""; 
    $dbname = "test"; 
    $res = mysql_connect($ip,$username,$password); 
    if(!$res) 
    { 
     echo "DB Connection Failed."; 
     exit; 
    } 
    if(!mysql_select_db("test")) 
    { 
     echo "NOT SELECTED"; 
     exit; 
    } 

     $company = array(
        'Record1'=>array('Shabbir',26,'Designer'), 
        'Record2'=>array('Burhan',24,'Architecture'), 
        'Record3'=>array('Huzeifa',20,'Accountant'), 
       ); 

     foreach ($company as $employees=>$details){ 

     echo '<strong>'.$employees.'</strong><br>'; 

     foreach($details as $employeeinfo){ 

      echo $employeeinfo.'<br>'; 

     } 

     } 

     $sql = "INSERT INTO biodata (Name, Age, Description) VALUES ($employeeinfo[0], $employeeinfo[1], '$employeeinfo[2]')"; 
     mysql_query($sql); 

?> 

答えて

1

あなたmysql_queryがあなたのforeach文の中であることを仮定している...あなたはSQL Injection

あなたも必要ない2 foreach statemenのためにデータを消毒する必要がありますトン...

修正

foreach ($company as $employees =>$details){ 
    echo '<strong>'.$employees.' - OK</strong><br>'; 
    mysql_query(sprintf($sql,mysql_real_escape_string($details[0]),mysql_real_escape_string($details[1]),mysql_real_escape_string($details[2]))); 
} 

完全なスクリプトアレンジメント

$ip = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "test"; 
$res = mysql_connect($ip,$username,$password); 
$sql = "INSERT INTO biodata (Name, Age, Description) VALUES ('%s', '%d', '%s')"; 
$company = array(
     'Record1'=>array('Shabbir',26,'Designer'), 
     'Record2'=>array('Burhan',24,'Architecture'), 
     'Record3'=>array('Huzeifa',20,'Accountant'), 
); 

if(!$res) 
{ 
    echo "DB Connection Failed."; 
    exit; 
} 

if(!mysql_select_db("test")) 
{ 
    echo "NOT SELECTED"; 
    exit; 
} 

foreach ($company as $employees =>$details){ 
    echo '<strong>'.$employees.' - OK</strong><br>'; 
    mysql_query(sprintf($sql,mysql_real_escape_string($details[0]),mysql_real_escape_string($details[1]),mysql_real_escape_string($details[2]))); 
} 
+0

偉大な作品!これは魅力のように働いた.. –

+0

よ、なぜあなたは '%s'をVALUESに使うのか説明してくださいね?? –

+0

私は値を適切にフォーマットしようとしていました。 'sprintf'の詳細についてはhttp://php.net/manual/en/function.sprintf.phpを見てください...それはあなたのために働いてうれしいです... don '受諾することを忘れて – Baba

0

...完全なコードです:

foreach ($company as $employees=>$details) 
{ 
    echo '<strong>'.$employees.'</strong><br>'; 
     foreach($details as $employeeinfo) 
     { 
      echo $employeeinfo.'<br>'; 
     } 
    $sql = "INSERT INTO biodata (Name, Age, Description) VALUES ($details[0], $details[1], '$details[2]')"; 
    mysql_query($sql); 
} 
+0

まいらねえより多くの私は、MySQLからデータをretriveしたいWebページに表示するものがありますか? –

1

サイドノート。あなたのループがどれほど小さなものであっても(反復回数が少ない)、クエリーを内部に入れないでください。代わりに、ループを使用してすべてのデータを含む複雑なクエリを1つ作成し、そのループの外でクエリを実行します。

EDIT:ループで作成できるクエリの例。

INSERT INTO table 
    (name, age, position) 
VALUES 
    ('Shabbir', 26, 'Designer'), 
    ('Burhan', 24, 'Architecture'), 
    ('Huzeifa', 20, 'Accountant'); 
関連する問題