PHP का sha1
फ़ंक्शन एक हेक्स संख्या का एक स्ट्रिंग प्रतिनिधित्व देता है।
इसका मतलब यह है कि यदि आप इसे स्क्रीन पर प्रिंट करते हैं, तो यह एक हेक्स नंबर प्रदर्शित करेगा। लेकिन स्मृति में, यह ASCII वर्णों का एक समूह है।
तो, हेक्स नंबर लें 1A2F
. स्मृति में ASCII के रूप में 0x31413246
. होगा , के बजाय 0x1A2F
MySQL का सामान्य इंटरफ़ेस सभी तर्कों को तार के रूप में भेजता है। सामान्य इंटरफ़ेस का उपयोग करते समय, MySQL ASCII स्ट्रिंग को बाइनरी मान में बदल देगा।
नई तैयार स्टेटमेंट विधि सब कुछ बाइनरी के रूप में भेजती है। तो आपका "1A2F" का अच्छा मूल्य अब 0x31413246 के रूप में भेजा जाएगा और कॉलम में डाला जाएगा। - स्रोत:dev.mysql.com - तैयार बयान
इसके बजाय, अपने हेक्स स्ट्रिंग को बाइनरी स्ट्रिंग में पैक करके परिवर्तित करें:
$binId = pack("H*", $id); // this string is not ASCII, don't print it to the screen! That will be ugly.
और फिर $binId
. पास करें $id के बजाय MySQLi ने स्टेटमेंट तैयार किया।