2012-06-29 96 views
0

我有我的數組顯示,但我似乎無法將它保存到數據庫中。所以,當我做var_dump($result);而$結果是我的數組,那麼下面的內容顯示插入數組到mysql

array 
0 => 
array 
    'Credit Weighting' => string '5' (length=1) 
    'Teaching Period(s)' => string 'Teaching Periods 1 and 2.' (length=25) 
    'No. of Students' => string '-.' (length=2) 
1 => 
array 
    'Credit Weighting' => string '5' (length=1) 
    'Teaching Period(s)' => string 'Teaching Periods 1 and 2.' (length=25) 
    'No. of Students' => string '-.' (length=2) 
2 => 
array 
    'Credit Weighting' => string '10' (length=2) 
    'Teaching Period(s)' => string 'Teaching Periods 1 and 2.' (length=25) 
    'No. of Students' => string '-.' (length=2) 

,下面將我的PDO查詢保存上述內容到MySQL但沒有什麼是happening.What我做錯了,請?

$result = array(); 
$placeholder = array(); 
$values = "?, ?, ?"; 
foreach ($result as $array){ 
$placeholder[] = $value; 

     $result[] = $array['CreditWeighting']; 
     $result[] = $array['TeachingPeriod']; 
     $result[] = $array['NoofStudents'];   
} 

$sql = "INSERT INTO data_array_copy (CreditWeighting,TeachingPeriod,NoofStudents) 
          VALUES (". implode('), (', $placeholder) . ")"; 
$stmt = $conn->prepare($sql); 
$stmt->execute($result); 
+0

您需要序列化您的數據。此鏈接將幫助你http://stackoverflow.com/questions/1978438/save-php-array-to-mysql – DrinkJavaCodeJava

+0

@ redelman431感謝您的答覆和鏈接,我會給出一個去看看如何去,謝謝很多。 – user1444442

回答

-1

好吧,如果有人在那裏,可能需要知道一個更簡單的方法,這可以做到。這是一個很好的解決方案。

$result = array(); 
foreach($result as $snode) { 

foreach($snode as $key => &$val) { 
    $val = mysql_real_escape_string($val);  
} 

$query = sprintf("INSERT INTO data_array_copy (
     CreditWeighting, 
     TeachingPeriod, 
     NoofStudents) 
        VALUES ('%s')",implode("','",$snode)); 

mysql_query($query) or die (mysql_error()); 
echo $query. '<br />'; 
} 

這很好用!

1

試試這個:

<?php 
//If your array is: 
/* 
$result = array(0=>array('Credit Weighting'=>'5', 
         'Teaching Period(s)'=>'Teaching Periods 1 and 2.', 
         'No. of Students'=> '-.'), 
       1=>array('Credit Weighting'=>'5', 
         'Teaching Period(s)'=>'Teaching Periods 1 and 2.', 
         'No. of Students'=> '-.'), 
       2=>array('Credit Weighting'=>'10', 
         'Teaching Period(s)'=>'Teaching Periods 1 and 2.', 
         'No. of Students'=> '-.')); 
*/ 
//The query 
$sql = "INSERT INTO data_array_copy (CreditWeighting,TeachingPeriod,NoofStudents) 
       VALUES (?,?,?)"; 
//Prepare the query 
$stmt = $conn->prepare($sql); 

//Loop through the $result array 
foreach ($result as $array){ 
    //Bind and execute the values to the prepared query 
    $stmt->bindParam(1, $array['Credit Weighting']); 
    $stmt->bindParam(2, $array['Teaching Period(s)']); 
    $stmt->bindParam(3, $array['No. of Students']); 
    $stmt->execute($result); 
} 
?> 

有在http://php.net/manual/en/pdo.prepared-statements.php結合PARAMS其他方法,但是直到你熟悉的來龍去脈,使其儘可能地易讀。通過這種方式,您或其他開發人員可以查看發生了什麼,而無需var_dump數組來獲取密鑰名稱等。 :)

+0

感謝您的答覆。我嘗試了上面編寫的示例代碼,並且nothings正在發生。沒有出現錯誤。也許我應該回應我的查詢並查看可能任何值實際上在查詢之前執行並保存到數據庫中。 – user1444442

+0

啓用'error_reporting(E_ALL)'也確保你的PDO連接報告錯誤和連接等。 '$ sql'中的'?'不會被替換,查詢會被模擬。檢查我添加的手冊的鏈接,還有http://www.phpro.org/tutorials/Introduction-to-PHP-PDO.html,它有一些很好的例子。希望它有幫助 –

+0

嘿,我有'ini_set('display_errors',1);'和'error_reporting(E_ALL);'在我的頁面頂部。感謝鏈接到手冊。我會看看它並試圖找出什麼是錯的。乾杯。 – user1444442