2D配列をデータベースに入れようとしています。私のコードは次のとおりです(これはPHPです):
public function addspot($linearray,$data){
$dbname=$data['dbname'];
try {
/* Create a connections with the supplied values */
$pdo = new PDO("mysql:host=" . Config::read('hostname') . ";dbname=" . Config::read('database'). "", Config::read('username'), Config::read('password'), array(PDO::ATTR_PERSISTENT => true));
} catch(PDOException $e) {
/* If any errors echo the out and kill the script */
return 'Database conncetion fail in assets/garage.class.php!Make sure your database information is correct';
}
foreach ($linearray as $lines) {
$spot="INSERT INTO `$dbname`(`floor`, `spot`, `status`, `uid`, `type`, `time`) VALUES ('$lines[0]', '$lines[1]', '$lines[2]', '$lines[3]', '$lines[4]', CURRENT_TIMESTAMP);";
$statement = $pdo->prepare($spot);
if($statement->execute()){
//silent
} else {
return 'Spot not added!';
}
}
}
構成値が正しく読み取られているだけでなく、スポットを追加するステートメントも正しいです。関数を実行すると、1つの「スポット」が正しく追加されますが、2D配列の残りの行は追加されないため、これはわかっています。
私の配列は次のとおりです。
array (size=16)
0 =>
array (size=5)
0 => string '1' (length=1)
1 => string '1' (length=1)
2 => string '1' (length=1)
3 => string '0' (length=1)
4 => string '1' (length=1)
1 =>
array (size=5)
0 => string '1' (length=1)
1 => string '2' (length=1)
2 => string '1' (length=1)
3 => string '0' (length=1)
4 => string '1' (length=1)
(and onwards)
私の問題は、私が書いた関数は最初の行(line [0])だけをデータベースに書き込み、他の関数は書き込まれないことです。
ステートメントの出力の更新 (print_rを使用):準備後に配置
PDOStatement Object
(
[queryString] => INSERT INTO `Garage2`(`floor`, `spot`, `status`, `uid`, `type`, `time`) VALUES ('1', '1', '1', '0', '1', CURRENT_TIMESTAMP);
)
PDOStatement Object
(
[queryString] => INSERT INTO `Garage2`(`floor`, `spot`, `status`, `uid`, `type`, `time`) VALUES ('1', '2', '1', '0', '1', CURRENT_TIMESTAMP);
)
print_r($ pdo-> errorInfo()); 出力executeステートメントのelse(失敗)部分に配置されます
Array
(
[0] => 00000
[1] =>
[2] =>
)