通常我会为 PHP 中的 mysql 数据库条目添加一个 for every 循环,但是当所有信息都在一个数组中时(我认为是多维的?)
我正在使用http://www.phpclasses.org/quick_csv_import解析一个工作正常的 CSV 文件,但我一生都无法弄清楚如何将结果放入循环中以写入数据库。
<?php
$con = mysql_connect("localhost","*****","****");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("*****", $con);
require_once('parsecsv.lib.php');
$csv = new parseCSV();
$csv->auto('prod2.csv');
$csv->titles as $value (this has the titles saved in it in an array)
$csv->data as $key => $row (this has the actual values in it in an array)
?>
编辑:数组如下所示:
[0] => Array
(
[ProductCategory] => Cleats and Spikes
[ProductSubCategory] => Masters Cleats
[Brand] => Masters
[ItemNumber] => SAM02BY
[ShortCode] => SAM0
[ItemDescription] => Ultra Grip F/T Pk (16) Blk/Yel
[ProductName] => Ultra Grip (6mm, F/T, Q/F)
[Options] => Fast Twist
[ImageURL] => hSAM02BY.jpg
[YoutubeURL] => http://www.youtube.com/watch?v=WuSB6rY9myg
[HostedURL] => 27527890
[StockStatus] => In Stock
[QtyAvailable] => 2149
[RRP] => 8.99
[Barcode] => 5027084199630
[DeliveryDue] => 09/03/2012
)
任何提示将不胜感激
最佳答案
我会使用 LOAD DATA INFILE将数据直接加载到MySQL中 -
LOAD DATA INFILE 'prod2.csv' INTO TABLE tbl_name
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;
这假设您在服务器上拥有适当的权限。 prod2.csv
需要替换为服务器上文件的完整路径。
要在 PHP 中处理 CSV,您可以使用类似的方法 -
<?php
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';
try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
$sql = 'INSERT INTO `table` (ProductCategory, ProductSubCategory, Brand, ...)
VALUES (?,?,?, ...)
ON DUPLICATE KEY UPDATE ProductCategory = VALUES(ProductCategory), ProductSubCategory = VALUES(ProductSubCategory), Brand = VALUES(Brand), ...';
$sth = $dbh->prepare($sql);
require_once 'parsecsv.lib.php';
$csv = new parseCSV();
$csv->auto('prod2.csv');
foreach ($csv->data as $row) {
// bind params and execute query
$sth->execute(array($row['ProductCategory'], $row['ProductSubCategory'], $row['Brand']));
}
这显然是不完整的,因为您没有包含所涉及表格的详细信息。如果可以的话,我建议使用LOAD DATA INFILE
,但是一旦您填写了空白,这就会起作用。请注意,我使用 PDO 而不是旧的 mysql_* 函数编写了此示例。由于准备好的语句,重复执行查询将稍微提高性能。
关于PHP/Mysql 将数组放入 mysql Db,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9911746/