यह बयान PostgreSQL 8.2.4 और PHP 5.2.17 साथ काम नहीं करता:
pg_query_params('SELECT $1', array(1));
ERROR: could not determine data type of parameter $1
पर्याप्त मेला। यह एक संभावित फिक्स है:
pg_query_params('SELECT CAST($1 AS INTEGER)', array(1));
यह समझ में आता है क्योंकि हम डेटा प्रकार के बारे में स्पष्ट हैं।
लेकिन निम्नलिखित बयान भी काम करता है, हालांकि यह पहली अभिव्यक्ति के बराबर होना चाहिए:
pg_query_params('SELECT COALESCE($1)', array(1));
क्यों? क्या COALESCE
किसी भी तरह से $ 1 के डेटा प्रकार को संशोधित करता है, या परिणाम के रूप में कुछ सरल डेटा प्रकार की गारंटी देता है?
संपादित करें: The docsCOALESCE
के विषय पर अपेक्षाकृत कम है।
Assumably , हाँ। मैं [उस समारोह के दस्तावेज़ों की जांच करूंगा] (http://www.postgresql.org/docs/9.0/interactive/functions-conditional.html#AEN15541)। इसे वापसी मूल्य निर्दिष्ट करना चाहिए - लेकिन मुझे स्पष्टीकरण के लिए मत पूछें :) – hakre