PHP PDO MYSQL - Easiest way to compare array to query and return an array with results not in result of query? -
PHP में मुझे MySQL में मेरे पास एक टेबल है उसमें मूल्य हैं: तुलना करने के लिए सबसे आसान तरीका (PDO को कनेक्शन विधि के रूप में प्रयोग करना) क्या है? कोड> उसमें: (ये हैं जो फाइलें MySQL में तालिका में प्रदर्शित नहीं की जाती हैं) मैं मैनुअल के माध्यम से किया गया है, लेकिन ऐसा कुछ भी नहीं मिल सकता है, जो वास्तव में इससे संबंधित होगा, शायद मुझे कुछ याद हो सकता है कोई इनपुट बहुत सराहना की जाएगी, धन्यवाद! ऐसा करने के लिए कोई तैयार फ़ंक्शन नहीं है। ज्यादातर समय, आपको पता चल जाएगा कि आपकी समस्या का कोई आउट-ऑफ-बॉक्स समाधान नहीं है। आपको अपना कोड लिखना पड़ेगा, जो कि बहुत मुश्किल नहीं है: डीबी को सभी फाइल नाम मिलते हैं, परिणामों के साथ एक सरणी बनाते हैं, फिर अपने पास की सरणी और क्वेरी परिणाम के बीच अंतर प्राप्त करें। एक बुनियादी उदाहरण होगा: आप इससे पहले कि आप सरणी की किसी भी लम्बाई को संसाधित करने की अनुमति देता है। / P> $ allFiles जैसा एक सामान्य सरणी है:
अर्रे ([0] = & gt; test1.csv [1] = & gt; test2.csv [2] = & gt; test3.csv)
| आईडी | प्रोसीसेड | | 0 | Test2.csv |
$ allFiles को तालिका में तुलना करने के लिए और एक नया सरणी
$ newFiles
अर्रे ([0] = & gt; test1.csv [1] = & gt; test3.csv)
$ stmt = $ pdo- & gt; तैयार करें ('चुनें प्रक्रिया से db.table जहां में प्रयुक्त (?,?,?)'); $ Stmt- & gt; पर अमल ($ allFiles); $ मौजूदा = सरणी (); जबकि $ $ = $ stmt- & gt; प्राप्त करें (पीडीओ :: FETCH_OBJ)) $ मौजूदा $] = $ पंक्ति- & gt; PROCESSED; // मौजूदा ऑरेट्स वाले एक्सट्रैक्ट ऑब्जेक्ट्स $ notFound = array_diff ($ सभी फाइलें, $ मौजूदा); var_dump ($ notFound);
$ allFiles सरणी की लंबाई का उपयोग करते हुए और
जोड़ सकते हैं प्लेसहोल्डर्स तदनुसार क्वेरी को अधिक गतिशील बना सकते हैं : <पूर्व>
$ allFiles = array_filter (array_unique ($ allFiles)); // साफ सरणी $ प्लेसहोल्डर = array_fill (0, गणना ($ allfiles), '?'); $ stmt = $ pdo- & gt; तैयार ('चयन प्रक्रिया से db.table जहां से प्रक्षेपित किया गया है (' .implode (',', $ placeholders)। ')'); // विकल्प: $ stmt = $ pdo- & gt; तैयार करें ('चयन प्रक्रिया से db.table जहां से प्रक्षेपित किया गया है ('। Substr (str_repeat ('?,', Count ($ allfiles)), // repeat?, के रूप में कई बार के रूप में मान 0, -1 / trailing ", trailing", ")। ')');); $ stmt- & gt; निष्पादित करें (array_values ($ allFiles)); // अधिक से अधिक सुरक्षित है माफ करना // बाकी के समान है
कोडर के लिए php स्क्रिप्टिंग कोड उदाहरण
ReplyDeleteएक फाइल सिस्टम php स्क्रिप्ट पर फ़ाइलों को स्थानांतरित करने के लिए पुनरावर्ती कार्य