2012-07-27 5 views
10

mysql pdo를 사용하여 Nullable 필드를 null 값 null로 설정할 수 없다. 나는 그것을 똑바로 SQL을 사용하여 할 수 있습니다.PHP mysql PDO가 NULL 값을 설정하지 않겠다.

나는 시도했다 :

  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'); 
    
  4. 5의 bindParam 대응 6

    bindValue(':param', 'NULL', PDO::PARAM_INT); 
    
  5. '널'널

    bindValue(':param', 'NULL', PDO::PARAM_NULL); 
    
  6. bindValue(':param', null); 
    
  7. '널 (Null)이 바인딩의 가치를 지켰다. 가치 PDO 결과에서

모든 것은 0

PHP 버전으로 설정되고 :PHP 5.3.2-1ubuntu4.10

MySQL 서버 버전 :5.1.63-0ubuntu0.10.04.1

편집나를 위해 열 정보를 원하시면 다음 작품

Picture

+0

열 유형은 무엇인가? 그것 nullable입니까? –

+2

@ DanielA.White 그는 단지 그가 곧바로 sql을 통해 그것을 할 수 있다고 말했다. –

+0

당신은 bindValue 문장이 아닌 나머지 코드를 보여줄 수 있습니까?난 당신이 모든 옵션을 시도하고 실제 데이터베이스에 문제가되지 않습니다 그럼 당신의 코드의 나머지 부분에 문제가 있어야합니다 용의자. –

답변

9

0 스크린 샷 : PDO::PARAM_NULL의 종류와 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(); 

패스. 또한 준비 에뮬레이션이 false로 설정되어 있는지 확인하십시오. 그게 도움이 될거야.

+6

이 ...'$ pdo-> setAttribute (PDO :: ATTR_EMULATE_PREPARES, false);'바로이 작은 녀석이 속임수였습니다. @ 트루트, 고마워! 그레이트 캐치! – wmarbut

0

먼저 모든 매개 변수를 변수에 할당 한 다음 해당 변수를 bindParam() 메서드에 전달하는 것이 좋습니다.

이러한 변수에 NULL을 전달하면 할당 할 수 있으며 정상적으로 작동합니다.

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

의 모든 길 파키스탄 :

관련 문제