2012-07-27 11 views
10

सेट करने से इंकार कर देता है मैं mysql pdo का उपयोग कर शून्य से शून्य के डिफ़ॉल्ट मान के साथ एक शून्य फ़ील्ड सेट करने में असमर्थ हूं। मैं इसे सीधे एसक्यूएल का उपयोग कर कर सकता हूं।PHP mysql पीडीओ नल मान

मैं कोशिश की है:

  1. अशक्त इंट

    bindValue(':param', null, PDO::PARAM_INT); 
    
  2. अशक्त अशक्त

    bindValue(':param', null, PDO::PARAM_NULL); 
    
  3. 'अशक्त', जे

    (ज्यादातर इस सवाल How do I insert NULL values using PDO? से)
    bindValue(':param', 'NULL', PDO::PARAM_INT); 
    
  4. 'अशक्त', अशक्त

    bindValue(':param', 'NULL', PDO::PARAM_NULL); 
    
  5. अशक्त

    bindValue(':param', null); 
    
  6. 'अशक्त'

    bindValue(':param', 'NULL'); 
    
  7. और 5 के bindParam समकक्षों और 6 एक चर के साथ कि बाध्यकारी का मूल्य आयोजित किया।

मूल्य में पीडीओ परिणामों से सब कुछ 0.

पीएचपी संस्करण के लिए स्थापित किया जा रहा:PHP 5.3.2-1ubuntu4.10

सर्वर संस्करण:5.1.63-0ubuntu0.10.04.1

संपादितमेरे लिए स्तंभ की जानकारी

Picture

+0

क्या स्तंभ प्रकार है? क्या वह शून्य है? –

+2

@ डैनियलए। उन्होंने अभी कहा था कि वह इसे सीधे एसक्यूएल के माध्यम से कर सकता है, इसलिए हाँ यह शून्य है। –

+0

क्या आप हमें अपने बाइंडवैल स्टेटमेंट्स के बजाए अपना बाकी कोड दिखा सकते हैं?मुझे संदेह है कि आपने इन सभी विकल्पों का प्रयास किया है और यह आपके वास्तविक डेटाबेस में कोई समस्या नहीं है, तो यह आपके शेष कोड के साथ एक समस्या होनी चाहिए। –

उत्तर

9

निम्नलिखित कार्यों में से 0 स्क्रीनशॉट: PHP के null में

<?php 

$pdo = new PDO("mysql:host=localhost;dbname=test", "root", "pass"); 
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 

$stmt = $pdo->prepare("INSERT INTO `null_test` (`can_be_null`) VALUES (:null)"); 
$stmt->bindValue(":null", null, PDO::PARAM_NULL); 

$stmt->execute(); 

दर्रा, PDO::PARAM_NULL के प्रकार के साथ। साथ ही, सुनिश्चित करें कि आपका तैयार अनुकरण गलत पर सेट है। इससे मदद मिल सकती है।

+6

यह ... '$ pdo-> setAttribute (PDO :: ATTR_EMULATE_PREPARES, false); 'यह छोटा लड़का यहां चाल था। @ ट्राउथ, धन्यवाद! महान पकड़ो! – wmarbut

0

मैं पहले सभी मानकों को चर के लिए आवंटित करने की अनुशंसा करता हूं और फिर उन चर को bindParam() विधि में पास करता हूं।

आप उन चरों पर न्यूल पास करके असाइन कर सकते हैं और यह ठीक काम करेगा।

$myVar = NULL; 
$conn->bindParam(':param1' , $myVar , PDO::PARAM_STR); 

से सभी तरह से पाकिस्तान :)

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