我想一個PHP腳本來讀取CSV文件內容的格式如下寫一個PHP文件從CSV讀取和執行SQL查詢
id, sku
1,104101
2,105213
總共有1486項是,我相信最好使用for循環而不是while!EOF。
之後,我想對名爲m118的數據庫表catalog_product_entity執行SQL查詢。
查詢會像更新SKU = $ csvSku WHERE ID = $ csvId
處於兩個PHP和MySQL的新手,我不知道從哪裏開始編碼。
我想一個PHP腳本來讀取CSV文件內容的格式如下寫一個PHP文件從CSV讀取和執行SQL查詢
id, sku
1,104101
2,105213
總共有1486項是,我相信最好使用for循環而不是while!EOF。
之後,我想對名爲m118的數據庫表catalog_product_entity執行SQL查詢。
查詢會像更新SKU = $ csvSku WHERE ID = $ csvId
處於兩個PHP和MySQL的新手,我不知道從哪裏開始編碼。
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();
?>
好的男人,我不會爲你寫代碼,因爲你不會學習,如果我這樣做。但我會指出你正確的方向。查看此鏈接瞭解如何在PHP中解析CSV文件。一個簡單的谷歌搜索應該也會給你關於將它輸入到MySQL表中的必要信息。
嘿男人,謝謝,其實我已經想通了自己。意識到PHP非常簡單。 – segfault 2009-06-02 05:12:52
Goblyn27是正確的。看看php.net上的fgetcsv()和mysql_query()。在文檔中甚至還有一些例子來說明如何做到這一點。
你需要做這樣的事情:
$filename = "file_name_on_server.csv"
$fp = fopen($filename ,"r");
while ($line = fgets ($fp))
{
現在使用Split獲得逗號分隔值
$arr = split (",", $line);
現在你有上$逗號分隔值的數組的數組線。您可以執行簡單的字符串格式化,將這些值粘貼到SQL查詢中。
$query = "INSERT INTO `TableBlah` (Field1, Field2) VALUES (" . $arr[0] . "," . $arr[1] . ")";
使用mysql api這些查詢發送到
}
fclose($fp);
幹得好學習:)
你應該也許現在在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腳本有超過你的以下優勢:
<?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;
?>
嘿......看看那個,你已經搞定了;) – RedBlueThing 2009-06-02 05:18:25