2009-06-02 7 views
7

मैं निम्न स्वरूप में CSV फ़ाइल से सामग्री पढ़ने की एक PHP स्क्रिप्ट चाहते हैंसीएसवी से पढ़ सकते हैं और एसक्यूएल क्वेरी को निष्पादित करने के लिए एक PHP फ़ाइल लेखन

id, sku 
1,104101 
2,105213 

1486 प्रविष्टियों की कुल देखते हैं, मेरा मानना ​​है कि कि इसके बजाए लूप के लिए उपयोग करना बेहतर है! ईओएफ।

उसके बाद, मैं m118, table catalog_product_entity नामक डेटाबेस पर SQL क्वेरी करना चाहता हूं।

क्वेरी अद्यतन sku = $ csvSku तरह कहां आईडी = $ csvid

दोनों PHP और MySQL में एक नौसिखिया होने के नाते, मैं कहाँ कोडिंग शुरू करने के लिए पता नहीं है जाएगा।

उत्तर

9

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(); 
?> 
+2

अरे ... इसे देखो, आपने इसे काम किया;) – RedBlueThing

+0

0 से लिखने के लिए यह कोड एक अच्छी उपलब्धि है। बधाई। –

+0

धन्यवाद कैननड और गोब्लिन। कुछ नया सीखना हमेशा अच्छा लगता है! – segfault

1

ठीक है, मैं आपके लिए कोड नहीं लिखूंगा क्योंकि अगर आप ऐसा नहीं करते हैं तो आप नहीं सीखेंगे। लेकिन मैं आपको सही दिशा में इंगित करूंगा। PHP में एक CSV फ़ाइल को पार्स करने के बारे में जानकारी के लिए इस लिंक को http://us.php.net/fgetcsv देखें। एक साधारण Google खोज आपको इसे एक MySQL तालिका में दर्ज करने के लिए आवश्यक जानकारी भी देनी चाहिए।

+0

हे मैन, धन्यवाद, असल में मैंने खुद को समझ लिया है। महसूस किया कि PHP बहुत सरल है। – segfault

0

Goblyn27 सही है। Php.net पर fgetcsv() और mysql_query() पर एक नज़र डालें। दस्तावेज़ों में भी उदाहरण हैं कि यह कैसे करें। अल्पविराम से परे मूल्यों

$arr = split (",", $line); 

अब आप $ पर अल्पविराम से परे मानों के लिए एक सरणी है की एक सरणी प्राप्त करने के लिए

$filename = "file_name_on_server.csv" 
$fp = fopen($filename ,"r"); 
while ($line = fgets ($fp)) 
{ 

अब Split का उपयोग करें:

2

आप की तरह कुछ करने की आवश्यकता होगी लाइन। आप उन मानों को SQL क्वेरी में चिपकाने के लिए सरल स्ट्रिंग स्वरूपण कर सकते हैं।

$query = "INSERT INTO `TableBlah` (Field1, Field2) VALUES (" . $arr[0] . "," . $arr[1] . ")"; 

mysql api का उपयोग डेटाबेस

} 
fclose($fp); 
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); 

पीडीओ स्क्रिप्ट तुम्हारा से अधिक निम्न लाभ हैं:

  • यह सुरक्षित है: पीडीओ स्वचालित रूप से आवश्यक डेटा को उद्धृत करता है। यह एसक्यूएल इंजेक्शन हमलों को रोकता है।
  • यह तेज़ है: पीडीओ क्वेरी (तैयार में) कैश करता है, और उसके बाद निष्पादित पैरामीटर का उपयोग करता है।
  • यह पोर्टेबल है: पीडीओ विभिन्न प्रकार के डीबी से कनेक्ट हो सकता है, न सिर्फ MySQL, इसलिए यदि आपको डीबी स्विच करने की आवश्यकता है, तो यह बहुत आसान है।
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; 


?> 
संबंधित मुद्दे