यहाँ प्रासंगिक कोड है:पीएचपी और एसक्यूएल सर्वर - फ़ील्ड नाम छोटा कर दिया
function connect(){
// DB credentials and info defined here....
$connection = odbc_connect("DRIVER={SQL Server Native Client 11.0}; Server=$server; Database=$db;", $loginname, $loginpass);
return $connection;
}
function odbc_fetch_results($stmt, &$results) {
$numrows = odbc_num_rows($stmt);
$row = odbc_fetch_array($stmt);
print_r($row); // Prints: Array ([MEASUREMENT_UNI] => kg)
if($row){
$results = array ($row);
while($row = odbc_fetch_array($stmt)){
array_push($results, $row);
}
}
return $numrows;
}
$sql = "select * from measurements where ID=$id";
$stmt = executeSQL($conn,$sql);
$nrows = odbc_fetch_results($stmt, $results);
odbc_free_result($stmt);
print_r($result[0]); // Prints: Array ([0] => Array ([MEASUREMENT_UNI] => kg))
परिणाम को शामिल करना चाहिए एक columnn MEASUREMENT_UNIT
जो (जब मैं एक print_r
इस बात की पुष्टि कर सकते हैं) MEASUREMENT_UNI
को छोटा किया गया है कहा जाता है जो केवल है 15 अक्षर अंतिम पत्र T
काट दिया गया है।
मैं भी यकीन है कि यह नहीं था विशेष तालिका या स्तंभ है कि मैं काम कर रहा हूँ के साथ किसी भी अजीब सेटअप बनाने के लिए एक अलग मेज और एक अलग एक परीक्षण के रूप SQL सर्वर डाटाबेस पर स्तंभ के साथ एक प्रश्न करने की कोशिश की साथ में। मैंने सत्यापित किया कि एक ही चीज एक अलग तालिका/कॉलम के साथ होती है: ऊपर दिए गए चयन क्वेरी को चलाने पर कॉलम नामों को अधिकतम 15 वर्णों तक छोटा कर दिया जाता है।
मैंने एक चयन का भी प्रयास किया है जो select *
के बजाय select MEASUREMENT_UNIT from from measurements where ID=$id
जैसे फील्ड नाम निर्दिष्ट करता है लेकिन इससे समस्या हल नहीं होती है।
मैंने इस बारे में अन्य समान पदों को देखा है, लेकिन वे सभी संकेत देते हैं कि मुझे कम से कम 30 वर्ण प्राप्त करने में सक्षम होना चाहिए, न कि 15 वर्ण सीमा जो मैं देख रहा हूं।
कॉलम नाम को 15 वर्णों में क्यों छोटा किया जा रहा है?
संपादित करें: एक MySQL सर्वर डेटाबेस से कनेक्ट करना एक ही समस्या में प्रतीत नहीं होता है। MySQL तालिकाओं से डीबी कॉलम नामों को छोटा नहीं किया गया था जो मुझे विश्वास दिलाता है कि यह ओडीबीसी प्लगइन में कोई समस्या नहीं है।
$connection = odbc_connect("DRIVER={MySQL};Server=$server; Database=$db;", $loginname, $loginpass);
$sql = "select * from measurements where ID=$id";
$stmt = executeSQL($conn,$sql);
$nrows = odbc_fetch_results($stmt, $results);
odbc_free_result($stmt);
print_r($result[0]); // Prints CORRECTLY: Array ([0] => Array ([MEASUREMENT_UNIT] => kg))
ध्यान दें कि उपरोक्त कोड वर्गों के दोनों एक ही पीएचपी + ODBC स्थापना के साथ एक ही सर्वर पर एक ही फाइल में परीक्षण किया गया।
क्या 'odbc_fetch_results' एक कस्टम फ़ंक्शन है? मैं इसे PHP दस्तावेज़ में नहीं देख रहा हूं। –
@ गीगावाट लगता है कि मैं स्पष्ट रूप से सोच नहीं रहा था। मैंने 'odbc_fetch_results' फ़ंक्शन के लिए कोड पोस्ट किया। – nmc
'print_r ($ पंक्ति) में फेंको;' $ पंक्ति = odbc_fetch_array ($ stmt) के तुरंत बाद; '। इससे हमें यह देखने देना चाहिए कि क्या आपके कोड में छंटनी है या 'obdc_fetch_array' कॉल में है। –