我正在尝试将二维数组放入数据库。我的代码如下(这是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()); 输出放在执行语句的else(fail)部分
Array
(
[0] => 00000
[1] =>
[2] =>
)