MYSQLi

2012-02-09 14 views
6

का उपयोग करके PHP में तैयार कथन के बाद डाली गई ऑब्जेक्ट की आईडी तक पहुंचें मुझे अंतिम डालने वाली ऑब्जेक्ट की आईडी चाहिए। मैं एसक्यूएल इंजेक्शन से बचने के लिए तैयार बयान का उपयोग करता हूं। लेकिन मुझे यकीन नहीं है कि आईडी कैसे प्राप्त करें।MYSQLi

$sql = "INSERT IGNORE INTO faculty (id, term, role, prefix, first_name, 
       middle_name, last_name, suffix) VALUES (?,?,?,?,?,?,?,?)"; 

     if (!($stmt = $mysqli->prepare($sql))) 
      echo "Faculty Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error; 

     $stmt->bind_param('sissssss', 
       $faculty['id'], 
       $faculty['term'], 
       $faculty['role'], 
       $faculty->name->prefix, 
       $faculty->name->first, 
       $faculty->name->middle, 
       $faculty->name->last, 
       $faculty->name->suffix 
     ); 

     if (!$stmt->execute()) 
      echo "Faculty Execute failed: (" . $mysqli->errno . ") " . $mysqli->error; 

     $result = $stmt->insert_id; 
     echo "\n Result:" . $result;  
     $stmt->close();    

परिणाम वहाँ डेटाबेस

समाधान में एक प्रविष्टि तत्व डेटाबेस में डाला जा रहा था होने के बावजूद हमेशा 0 है। समस्या तब थी जब मैंने टेबल आईडी बनाया था एक पूर्णांक नहीं था, यह एक वर्चर था जो एक कर्मचारी आईडी का प्रतिनिधित्व करता था। इसे ठीक करने के लिए, मैंने कर्मचारी आईडी को तालिका में एक अतिरिक्त कॉलम के रूप में जोड़ा और डिफ़ॉल्ट आईडी int auto_increment प्राथमिक कुंजी का उपयोग किया और यह काम किया।

उत्तर

3

कोशिश बदलते $result = $stmt->get_result();$result = $stmt->insert_id; को

get_result() अधिक के लिए SELECT प्रश्नों के बजाय INSERT रों है।

http://php.net/manual/en/mysqli-stmt.get-result.php

http://php.net/manual/en/mysqli-stmt.insert-id.php

+0

मैं वास्तव में है कि समारोह मिल गया है और हालांकि यह उपयोग करने की कोशिश, यह लगातार रिटर्न 0. – user1165788

+1

मानसिक स्वास्थ्य की जांच - यह वास्तव में निश्चित रूप से एक पंक्ति सम्मिलित किया? अर्थात। क्या यह 'INSERT' या' इग्नोर 'करता है? – Joe

+0

मैंने इसे समझ लिया। इसे तालिका में डाला जा रहा था, लेकिन फिर मुझे एहसास हुआ कि मेरी प्राथमिक कुंजी आईडी एक कर्मचारी कोड था जिसे मैं सेटिंग कर रहा था ताकि यह प्राथमिक कुंजी के मूल्य को वापस न कर सके। मैंने बस डेटाबेस कोड को डेटाबेस में एक अतिरिक्त कॉलम के रूप में सेट किया है और डिफ़ॉल्ट ऑटो वृद्धि आईडी को प्राथमिक कुंजी के रूप में उपयोग किया है और यह काम करता है। – user1165788

संबंधित मुद्दे