Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

PHP - MySQL ने एक सरणी सम्मिलित करने के लिए कथन तैयार किया

नहीं... यह निश्चित रूप से किसी भी सरणी के साथ पीडीओ से कठिन था क्योंकि कैसे mysqli_stmt_bind_param() काम करता है... और यह $array . को बदलकर ठीक काम करता है अन्य स्तंभों के लिए डेटा निकालने/जोड़ने के लिए।

$mysqli = new mysqli('localhost', 'root', 'password', 'test');

$array  = array("name"=>"pineapple", "color"=>"purple"); 

$table_name = "fruit"; 



insert_data($mysqli, $array, $table_name);



function insert_data($mysqli, $array, $table_name) 
{
   $placeholders = array_fill(0, count($array), '?');

   $keys   = array(); 
   $values = array();
   foreach($array as $k => $v) {
      $keys[] = $k;
      $values[] = !empty($v) ? $v : null;
   }

   $query = "insert into $table_name ".
            '('.implode(', ', $keys).') values '.
            '('.implode(', ', $placeholders).'); '; 
   // insert into fruit (name, color) values (?, ?);    

   $stmt = $mysqli->prepare($query);

   // create a by reference array... 
   $params = array(); 
   foreach ($array as &$value) { 
      $params[] = &$value;
   }
   $types  = array(str_repeat('s', count($params))); 
   $values = array_merge($types, $params); 

   /*           
   $values = Array
      (
          [0] => ss
          [1] => pineapple
          [2] => purple
      ) 
   */

   call_user_func_array(array($stmt, 'bind_param'), $values); 

   $success = $stmt->execute();

   if ($success) { print "it worked..."; } 
           else { print "it did not work..."; }
}  

मुझे इन SO पोस्ट से कुछ मदद मिली:
- https://stackoverflow.com/a /15933696/623952
- https://stackoverflow.com/a/6179049/623952

तो... $stmt->bind_param() . में पहला पैरामीटर एक स्ट्रिंग है जिसमें पास किए गए प्रत्येक पैरामीटर के लिए एक चार है। और वह चार पैरामीटर डेटा प्रकार का प्रतिनिधित्व करता है। ऊपर के उदाहरण में, दोनों दो पैरामीटर स्ट्रिंग हैं इसलिए यह ss बन जाता है . ऊपर के उदाहरण में भी एक स्ट्रिंग हमेशा ग्रहण की जाती है।

मुझे यह चार्ट bind_param() . में मिला है दस्तावेज़ीकरण:

प्रकार
एक स्ट्रिंग जिसमें एक या अधिक वर्ण होते हैं जो संबंधित बाइंड चर के प्रकार निर्दिष्ट करते हैं:

Type specification chars  

Character    Description  
i            corresponding variable has type integer
d            corresponding variable has type double
s            corresponding variable has type string
b            corresponding variable is a blob and will be sent in packets


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. जावा में वर्तमान तिथि से mySQL से किसी दिनांक की तुलना कैसे करें?

  2. MySql सीमा का उपयोग किए बिना अगली निचली संख्या का चयन करें

  3. केकफ़्पी 3.0 दो कॉलम में एक के रूप में मान प्राप्त करें

  4. MySQL के साथ यादृच्छिक पंक्तियों का चयन करना

  5. एक क्वेरी में उपयोग किए जाने वाले कॉलम नाम बनाने के लिए MySQL concat ()?