2012-06-29 4 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); 
} 
?> 

Есть и другие методы для связывания Params в http://php.net/manual/en/pdo.prepared-statements.php, но пока ваш знакомый с плюсами и минусами не сделать его максимально читаемым, насколько это возможно. Таким образом, вы можете или другие разработчики увидеть, что происходит без массивов var_dump'ing, чтобы получить ключевые имена ect. :)

+0

Спасибо за ответ. Я пробовал пример кода, который вы написали выше, и ничего не происходит. Нет ошибки. Может быть, я должен выполнить эхо-запрос и увидеть, может быть, какое-либо значение действительно находится в запросе, прежде чем оно будет выполнено и сохранено в базе данных. – user1444442

+0

enable 'error_reporting (E_ALL)' также убедитесь, что ваше PDO-соединение сообщает об ошибках и подключенном ect. '' 'В' $ sql' не будет заменен, запрос будет эмулирован. Проверьте ссылку на добавленное мной руководство, а также http://www.phpro.org/tutorials/Introduction-to-PHP-PDO.html, в котором есть несколько хороших примеров. надеюсь, что это помогает –

+0

Эй, у меня есть 'ini_set ('display_errors', 1);' и 'error_reporting (E_ALL);' в верхней части моей страницы. Спасибо за ссылку на руководство. Я посмотрю на это и попытаться выяснить, что не так. – user1444442