2012-04-17 134 views
0

我創建了一個名爲「test」的數據庫並創建了一個名爲「biodata」的表。我已經創建了3個名爲「名稱」「年齡」和「描述」的列到生物數據表中。現在如何將數組結果存儲到每列中。如何使用PHP將多維數組存儲到mysql

下面是完整的代碼...

<?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

偉大的作品!這工作就像一個魅力.. – 2012-04-17 19:57:04

+0

可以請你解釋一下爲什麼你在VALUES中使用'%s'? – 2012-04-17 19:58:40

+0

我試圖正確地格式化值..見http://php.net/manual/en/function.sprintf.php有關'sprintf'的更多信息...我很高興它爲你工作...不' t忘記接受 – Baba 2012-04-17 20:02:36

0

你的SQL查詢只是在錯誤的地方:

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

嘿Guyz還有更多我想要從MySQL中檢索數據,並希望在網頁上顯示? – 2012-04-18 10:24:55

1

旁註。不管你的循環多麼小(迭代次數少),不要把查詢放在它裏面。而是僅使用循環構造一個包含所有數據的複雜查詢,然後在循環外部執行查詢。

編輯:您可以在循環中構建查詢的示例。

INSERT INTO table 
    (name, age, position) 
VALUES 
    ('Shabbir', 26, 'Designer'), 
    ('Burhan', 24, 'Architecture'), 
    ('Huzeifa', 20, 'Accountant');