15

mysql pdo を使用して、デフォルト値が null の null 許容フィールドを null に設定できません。私はまっすぐなSQLを使ってそれを行うことができます。

私は試しました:(主にこの質問からPDOを使用してNULL値を挿入するにはどうすればよいですか?

  1. ヌル整数

    bindValue(':param', null, PDO::PARAM_INT);
    
  2. ヌル ヌル

    bindValue(':param', null, PDO::PARAM_NULL);
    
  3. 'ヌル'、整数

    bindValue(':param', 'NULL', PDO::PARAM_INT);
    
  4. 「ヌル」、ヌル

    bindValue(':param', 'NULL', PDO::PARAM_NULL);
    
  5. ヌル

    bindValue(':param', null);
    
  6. 'ヌル'

    bindValue(':param', 'NULL');
    
  7. bindParamバインディングの値を保持する変数を持つ 5 と 6の対応物。

PDO からのすべての結果は、値が 0 に設定されます。

PHP バージョン: PHP 5.3.2-1ubuntu4.10

MYSQL サーバーのバージョン: 5.1.63-0ubuntu0.10.04.1

列情報の編集スクリーンショット

写真

4

2 に答える 2

13

以下は私のために働きます:

<?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();

nullタイプが。のPHPを渡しPDO::PARAM_NULLます。また、準備エミュレーションがfalseに設定されていることを確認してください。それが役立つかもしれません。

于 2012-07-27T18:22:07.703 に答える
0

最初にすべてのパラメーターを変数に割り当ててから、それらの変数をbindParam()メソッドに渡すことを強くお勧めします。

これらの変数に NULL を渡すことで割り当てることができ、正常に動作します。

$myVar = NULL;
$conn->bindParam(':param1' , $myVar , PDO::PARAM_STR);
于 2016-07-23T09:47:00.233 に答える