0

アレイをそのように表示していますが、データベースに保存できないようです。したがって、var_dump($result);$ resultが配列であるときに実行すると、次のコンテンツが表示されます。

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)

上記のコンテンツをmysqlに保存するためのPDOクエリを以下に示しますが、何も起こりません。何が間違っているのでしょうか。

$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);
4

2 に答える 2

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にパラメータをバインドする他の方法がありますが、インとアウトに精通するまでは、可能な限り読みやすくなります。このようにして、あなたや他の開発者は、キー名を取得するために配列をvar_dumpすることなく何が起こっているかを見ることができます。:)

于 2012-06-30T00:20:42.883 に答える
-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 />'; 
}

これはうまくいきます!!

于 2012-06-30T01:51:22.087 に答える