我希望PHP脚本能够以下列格式从CSV文件中读取内容
id, sku
1,104101
2,105213
共有1486个条目,我相信最好使用for循环而不是while!EOF。
之后,我想对名为m118的数据库执行SQL查询,表catalog_product_entity。
查询就像UPDATE sku = $ csvSku WHERE id = $ csvId
作为PHP和MySQL的新手,我不知道从哪里开始编码。
答案 0 :(得分:11)
fgetcsv可用于解析CSV文件。 mysql_query方法可用于执行MySQL查询。
完整的代码如下:
<?php
$fin = fopen('catalog_product_entity.csv','r') or die('cant open file');
$link = mysql_connect('localhost', 'm118', 'pw');
If (!$link) {
die ('Could not connect: ' . mysql_error());
}
@mysql_select_db('m118') or die ('Unable to select database');
echo "Connection succeeded <br />\n";
while (($data=fgetcsv($fin,1000,","))!==FALSE) {
$query = "UPDATE catalog_product_entity SET sku='$data[1]' WHERE entity_id='$data[0]'";
mysql_query($query);
echo "Record updated <br />\n";
}
fclose($fin);
mysql_close();
?>
答案 1 :(得分:3)
您需要执行以下操作:
$filename = "file_name_on_server.csv"
$fp = fopen( $filename ,"r");
while ($line = fgets ($fp))
{
现在使用Split来获取逗号分隔值的数组
$arr = split (",", $line);
现在你有一个数组用于$ line上的逗号分隔值。您可以执行简单的字符串格式化以将这些值粘贴到SQL查询中。
$query = "INSERT INTO `TableBlah` (Field1, Field2) VALUES (" . $arr[0] . "," . $arr[1] . ")";
使用mysql api将这些查询发送到数据库
}
fclose($fp);
答案 2 :(得分:3)
学习上做得好:)
您现在应该了解PHP中的PDO,因为(在我看来)是在PHP中执行MySQL查询的最佳,最安全和最快捷的方法:
<?php
$fin = fopen('catalog_product_entity.csv','r') or die('cant open file');
try {
$link = new PDO('mysql:dbname=m118;host=localhost', 'm118', 'pw');
echo 'Connection succeeded <br />' . PHP_EOL;
$stmt = $db->prepare('UPDATE catalog_product_entity SET sku = :sku WHERE entity_id = :id');
//Only give the length parameter if you **KNOW** that no line will be longer than that
while (($data=fgetcsv($fin,1000,","))!==FALSE) {
if ($stmt->execute(array(':sku' => $data[1], ':id' => $data[0]))) {
echo 'Record updated <br />' . PHP_EOL;
} else {
$err = $stmt->errorInfo();
echo 'Update Failed: ' . $err[2] . PHP_EOL;
}
}
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
fclose($fin);
PDO脚本具有以下优势:
答案 3 :(得分:1)
好的,我不会为你编写代码,因为如果我这样做你就不会学习。但我会指出你正确的方向。有关在PHP中解析CSV文件的信息,请查看此链接http://us.php.net/fgetcsv。一个简单的谷歌搜索也应该提供有关将其输入MySQL表格的必要信息。
答案 4 :(得分:0)
Goblyn27是正确的。看看php.net上的fgetcsv()和mysql_query()。文档中甚至有关于如何执行此操作的示例。
答案 5 :(得分:0)
<?php
include ("dbsanjog.php");
$uploadedfile=$_REQUEST['uploadedfile'];
$target_path = "dataupload/";
$user=$_REQUEST['username'];
$target_path = $target_path.$user.".csv";
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path))
{
echo "The file ". basename( $_FILES['uploadedfile']['name']). "has been uploaded";
}
//echo $target_path; die;
//$row = 1;
$handle = fopen($target_path, 'r');
//$sql="update agents_det set where user='$user'";
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
{
$query = "UPDATE agents_det SET contact='$data[3]' WHERE user='$user'";
}
fclose($handle);
//mysql_query($test);
//echo ($test[1]); die;
//echo $test; die;
?>