2009-11-03 16 views
22

साथ एकल पंक्ति, एकल स्तंभ लाई जा रही है मैं एक mysql क्वेरी कि एक ही पंक्तिपीडीओ

"SELECT some_col_name FROM table_name WHERE user=:user" 

में एक एकल स्तंभ को निशाना बनाता रहा बयान $stmt->execute(); कैसे मैं इस एकल कक्ष सीधे एक चर में रखा मिलता है पर अमल करने के बाद है बिना लूप के? दूसरे शब्दों में

from $stmt->execute(); 

to $col_value = 100; 

मैं नीचे 2 की कोशिश की पाने के लिए, लेकिन न तो काम किया .. स्तंभ मूल तालिका में संख्या 4 है, लेकिन मैं के बाद से मेरी चुनिंदा बयान में मैं इसे केवल का चयन कर रहा हूँ संभालने कर रहा हूँ , यह 1 होना चाहिए जब मैं fetchColumn के पैरामीटर निर्दिष्ट करता हूं।

$col_value = $stmt->fetchColumn(); 
$col_value = $stmt->fetchColumn(0); 

जैसा कि आप देख सकते हैं, मैं इसे यथासंभव कम से कम लाइनों में करने की कोशिश कर रहा हूं।

उत्तर

30

क्या आप सुनिश्चित हैं कि यह किसी भी पंक्ति को वापस कर रहा है?
$stmt->fetchColumn()
एक ही मूल्य लाने के लिए सही तरीका है, इसलिए शायद आपने इसे बाध्य नहीं किया: उपयोगकर्ता पैरामीटर या यह बस कोई पंक्ति नहीं लौटा।

+1

धन्यवाद सब, यह डेटाबेस के साथ कुछ भी हो गया। मुझे पता था कि यह काम कर रहा होना चाहिए – Chris

0

क्या आपने पहले कथन तैयार किया है? ($stmt->execute() से पहले)

$stmt = $db->prepare("SELECT some_col_name FROM table_name WHERE user=:user"); 
10
$sql='SELECT some_col_name FROM table_name WHERE user=?'; 

$sth=$pdo_dbh->prepare($sql); 
$data=array($user); 

$sth->execute($data); 

$result=$sth->fetchColumn(); 
0

आप इस का उपयोग कर सकते हैं:

$stmt->fetch(PDO::FETCH_COLUMN, $number_of_column); 
+1

इस तरह आप क्या सलाह देते हैं? यह क्या कर रहा हैं? –

+1

@ केविनपैंको: यह वही बात है, लेकिन मुझे इस तरह से पसंद है, यह मेरे मॉडल में कोड को सामान्य करता है, एक चरम के साथ fetch() या fetchAll() को कॉल करता है जैसे कॉलम, दोनों ... – Mimouni

1

मुझे यकीन है कि नहीं कर रहा हूँ क्यों इतने सारे लोग गंदगी इस अप:

$stmt = $dbh->prepare("SELECT `column` FROM `table` WHERE `where`=:where"); 
$stmt->bindValue(':where', $MyWhere); 
$stmt->execute(); 
$SingleVar = $stmt->fetchColumn(); 

यकीन है कि आप में एक विशिष्ट column का चयन कर रहे हैं क्वेरी और * या आपको fetchColumn() में कॉलम ऑर्डर नंबर निर्दिष्ट करने की आवश्यकता होगी, उदाहरण: $stmt->fetchColumn(2); आमतौर पर यह एक अच्छा विचार नहीं है क्योंकि टी डेटाबेस में कॉलम को पुनर्गठित किया जा सकता है, कोई ...

यह केवल unique 'wheres' के साथ ठीक से काम करेगा; fetchColumn() एक सरणी नहीं लौटाएगा।