मुझे मास्टरमाइंड की तकनीक पसंद है , लेकिन कोडिंग सरल हो सकती है:
function cast_query_results($result): array
{
if ($result === false)
return null;
$data = array();
$fields = $result->fetch_fields();
while ($row = $result->fetch_assoc()) {
foreach ($fields as $field) {
$fieldName = $field->name;
$fieldValue = $row[$fieldName];
if (!is_null($fieldValue))
switch ($field->type) {
case 3:
$row[$fieldName] = (int)$fieldValue;
break;
case 4:
$row[$fieldName] = (float)$fieldValue;
break;
// Add other type conversions as desired.
// Strings are already strings, so don't need to be touched.
}
}
array_push($data, $row);
}
return $data;
}
मैंने परिणाम-सेट के बजाय क्वेरी को गलत तरीके से लौटाने के लिए जाँच भी जोड़ा।
और एक फ़ील्ड के साथ एक पंक्ति के लिए जाँच करना जिसमें एक शून्य मान है।
और अगर वांछित प्रकार एक स्ट्रिंग है, तो मैं उस पर कोई समय बर्बाद नहीं करता हूं - इसकी पहले से ही एक स्ट्रिंग।
मैं अधिकांश php कोड में इसका उपयोग करने से परेशान नहीं हूं; मैं सिर्फ php के स्वचालित प्रकार रूपांतरण पर भरोसा करता हूं। लेकिन अगर बहुत सारे डेटा को क्वेरी करना है, तो अंकगणितीय संगणना करने के लिए, यह अधिकतम प्रकार के सामने वाले हिस्से में डालने के लिए समझदार है।