2015-05-22 5 views
10

मैं डेटाबेस में अपने डेटा को अद्यतन करने पर काम कर रहा हूँ और यहाँ से img स्रोत लायें मेरी समस्या हैडेटाबेस

if (!empty($_FILES['fileToUpload'])) 
{ 
    $dest = 'images/Uploaded/'; 
    if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $dest.$_FILES['fileToUpload']['name'])) 
     $file = $dest.$_FILES['fileToUpload']['name']; 
} 

और मैं चाहता हूँ कि अगर $_FILES खाली हैं, वर्तमान फ़ाइल डेटाबेस में संग्रहीत हम अपडेट करते समय इसे केवल मूल्य बनाए रखेंगे। मेरे कोड में क्या होता है जब पहले से मौजूद एक मौजूदा छवि है और मैं फ़ाइल अपलोड नहीं करता हूं, वह छवि जो पहले से ही गायब हो चुकी है।

कृपया मदद करें!

+1

आप बस एक शर्त है जब आपकी क्वेरी के निर्माण इस्तेमाल कर सकते हैं। – Burki

+0

@Hunter: आप यह कोशिश कर सकते हैं http://www.dreamincode.net/forums/topic/118382-how-to-update-an-image-in-mysql/ – Abdul

+0

या अगर (file_exists ($ TARGET_PATH)) का उपयोग करें { // आपका कोड } – Abdul

उत्तर

1

खाली फ़ाइलों को पोस्ट करते हैं, तो आप अपने डेटाबेस से oldfile नाम लाने की जरूरत आईडी

if(empty($_FILES)){ 
    $qry = "select * from tablename where id = ? "; 
       $q = $this->db->conn_id->prepare($qry); 
       $q->bindValue(1, $id, PDO::PARAM_INT); 
       $q->execute(); 
       while($rows = $q->fetch(PDO::FETCH_ASSOC)){ 
       $filename = $rows['imagename']; 
       } 
} else { 
    $dest = 'images/Uploaded/'; 
    if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $dest.$_FILES['fileToUpload']['name'])) 
     $file = $dest.$_FILES['fileToUpload']['name']; 
} 
0

द्वारा निर्भर यदि आपकी फ़ाइल तो खाली नहीं है

if (!empty($_FILES['fileToUpload'])) 
{ 
    $dest = 'images/Uploaded/'; 
    if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $dest.$_FILES['fileToUpload']['name'])) 
     $file = $dest.$_FILES['fileToUpload']['name']; 
} 
बाकी

यदि आपकी फ़ाइल रिक्त है जो अद्यतन/संपादन शर्त पर इसका मतलब है, तो यह है कि आईडी

else 
    { 
// fetch your image from database relevant to that id 
    $select=mysql_query(select image from your_table where id='$id'); 
    $row=mysql_fetch+assoc($select); 

     $file=$row['image']; 
    } 
+0

मैं ' मैंने इसे पीडीओ का उपयोग करने की कोशिश की है क्योंकि मैंने इसे पसंद किया है लेकिन यह काम नहीं कर रहा है T_T –

0

के लिए प्रासंगिक अपने डाटाबेस से नहीं निकाला यहां समस्या है ->यदि (! खाली ($ _ FILES ['fileToUpload']) आप कह रहे हैं कि फ़ाइल खाली नहीं है या नहीं। यदि आप फ़ाइल खाली हैं तो आप क्या कहना चाहते हैं क्या यह सिर्फ '!' को हटा दें कार्य करना चाहिए।

तुम भी कोशिश कर सकते हैं - फ़ाइल के आकार की जाँच करने के लिए यदि फ़ाइल खाली है देखने के लिए> $ _FILES [ 'myVarName'] [ 'आकार']> 0

+0

यह सच नहीं है, 'खाली() 'का उपयोग यह जांचने के लिए किया जाता है कि अपलोड से संबंधित चर युक्त सरणी दी गई है (उर्फ, अगर कोई फ़ाइल अपलोड हो गई है) – Sjon

0

मुझे लगता है कि आपका प्रश्न वास्तव में आपकी समस्या को प्रतिबिंबित नहीं कर रहा है? ऐसा लगता है कि आपको वास्तव में डेटाबेस से छवि स्रोत लाने में समस्या है? आपके द्वारा प्रदान किए गए कोड के अलावा बहुत मदद नहीं करता है। हो सकता है कि डेटाबेस गतिविधि से संबंधित कोड पोस्ट करें ताकि हम देख सकें कि डेटाबेस से डेटा को अपडेट/लाने में क्या गलत है।

हालांकि मान्यताओं के आधार पर मैं आपके प्रश्न का उत्तर देने का प्रयास करूंगा।

यदि छवि अद्यतन को छोड़कर अनुरोध के साथ कोई अन्य डेटा पास नहीं किया गया है, तो समाधान होना चाहिए, यदि आपके डेटाबेस प्रश्नों को ब्लॉक में ले जाएं। मतलब .. यदि कोई छवि अपलोड नहीं की गई है तो डेटाबेस को अपडेट न करें।

if (!empty($_FILES['fileToUpload'])) 
{ 
    $dest = 'images/Uploaded/'; 
    if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $dest.$_FILES['fileToUpload']['name'])) 
     $file = $dest.$_FILES['fileToUpload']['name']; 

    //database update here 
} 

क्योंकि अगर अपने डेटाबेस प्रश्नों अगर ब्लॉक के बाहर होने वाले डेटाबेस वैसे भी अपडेट कर दिया जाएगा, और मैं तुम्हें क्वेरी में $ फ़ाइल चर में पारित मान। और इस मामले में $ फ़ाइल खाली हो जाएगी क्योंकि $ फ़ाइल केवल परिभाषित की गई है और आईएफ ब्लॉक में एक मान दिया गया है।

, मुझे आपकी सहायता करने के लिए प्यार होता है, लेकिन आप कुछ और जानकारी की तरह हमारी मदद की जरूरत है ऐसा करने के लिए,

आप अपने कोड के और अधिक साझा कर सकता (आप संवेदनशील डेटा को छुपा सकते हैं)

हैं अपलोड के साथ भेजा गया अन्य डेटा जिसे आपको डेटाबेस में उपयोगकर्ता डेटा को अपडेट करने की आवश्यकता हो सकती है लेकिन छवि को इस तरह रखना चाहिए?

यदि ऐसा है ..आपके पास 2 विकल्प

1) डेटाबेस से इसे चुनकर अद्यतन करने से पहले वर्तमान उपयोगकर्ता फ़ाइल प्राप्त करें, इसे आपके द्वारा बताए गए IF ब्लॉक से पहले $ फ़ाइल चर में संग्रहीत करें। यदि स्थिति सत्य है, तो $ फ़ाइल चर अद्यतन किया जाएगा, यदि नहीं, तो $ फ़ाइल चर के पास आपके द्वारा असाइन किया गया पुराना मान होगा जो वर्तमान उपयोगकर्ता फ़ाइल है।

2) एक गतिशील एसक्यूएल क्वेरी बनाएं, जिसका अर्थ है कि यदि कोई उपयोगकर्ता नई तस्वीर अपलोड करता है तो क्वेरी में जोड़ता है, अगर इसे क्वेरी में नहीं जोड़ता है और केवल उन फ़ील्ड को अद्यतन करता है जिन्हें अद्यतन करने की आवश्यकता है। मैं पीडीओ से परिचित नहीं हूं, लेकिन अवधारणा यहां है।

0
if(strlen($_FILES)<=4){ 
$qry = "select * from tablename where id = ? "; 
      $q = $this->db->conn_id->prepare($qry); 
      $q->bindValue(1, $id, PDO::PARAM_INT); 
      $q->execute(); 
      while($rows = $q->fetch(PDO::FETCH_ASSOC)){ 
      $filename = $rows['imagename']; 
      } 
} else { 
    $dest = 'images/Uploaded/'; 
    if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $dest.$_FILES['fileToUpload']['name'])) 
     $file = $dest.$_FILES['fileToUpload']['name']; 
} 

/* Note : strlen() check if $_FILES have value then it is more then 4 char (3 file extension and 1 dot */ 
0
$file = ""; 

//Run SQL query to update the table fields except file field here 

if (!empty($_FILES['fileToUpload'])) 
{ 
    $dest = 'images/Uploaded/'; 
    if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $dest.$_FILES['fileToUpload']['name'])) 
    { $file = $dest.$_FILES['fileToUpload']['name']; } 
} 

if($file!="") 
{ 
    //Query to update file field only 
}