2012-04-29 16 views
4

新しいレコードをデータベースに挿入しようとすると問題が発生します。私が考える問題は、ビットフィールドです。値を代入すると、私はこのエラーになります:ビットデータ型のフィールドにデータを挿入するにはどうすればよいですか?

Failed: Array ([0] => Array ([0] => 22018 [SQLSTATE] => 22018 [1] 
=> 245 [code] => 245 [2] => [Microsoft][SQL Server Native Client 10.0] 
[SQL Server]Conversion failed when converting the varchar value ' 1 ' 
to data type bit. [message] => [Microsoft][SQL Server Native Client 10.0] 
[SQL Server]Conversion failed when converting the varchar value ' 1 ' to 
data type bit.)) 

私はそれをfalseに変更します。私は自分のコードのいくつかを表示します。私はこの変数に絞り込んだので、ほとんどを切り捨てました。

$active = True; 

ここに私の挿入クエリです。

$sqlInsert = "INSERT INTO customers(
       customerID, 
       registeredDate, 
       givenName, 
       familyName, 
       email, 
       password, 
       phone, 
       mobile, 
       property, 
       street, 
       locality, 
       town, 
       area, 
       postalCode, 
       active 
      ) 
      VALUES(" . 
       $newUser . "," . 
       $date . ", ' " . 
       $given . " ', ' " . 
       $family . " ', ' " . 
       $email . " ', ' " . 
       $pwd . " ', ' " . 
       $phone . " ', ' " . 
       $mob . " ', ' " . 
       $property . " ', ' " . 
       $street . " ', ' " . 
       $locality . " ' , ' " . 
       $town . " ', ' " . 
       $area . " ', ' " . 
       $postalcode . " ', ' " . 
       $active . " ')"; 

$stmtInsert = sqlsrv_query($conn, $sqlInsert); 

答えて

3

私はactiveフィールドはbitデータ型であることを前提としています。

customeridフィールドの場合と同様に、アクティブなフィールドに渡される値の周りには引用符を使用しません。

はまた、私はあなたが/に/偽の値を変換するために持っていると思います。

修正コード" . $active . "を囲む単一引用符が削除されていることに注目してください。

$sqlInsert = "INSERT INTO customers(customerID, registeredDate, givenName, 
       familyName, email, password, 
       phone, mobile, property, 
       street, locality, town, 
       area, postalCode, active) 
       VALUES(" . $newUser . "," . $date . ", ' " . $given . " ', 
       ' " . $family . " ', ' " . $email . " ', ' " . $pwd . " ', 
       ' " . $phone . " ', ' " . $mob . " ', ' " . $property . " ', 
       ' " . $street . " ', ' " . $locality . " ' , ' " . $town . " ', 
       ' " . $area . " ', ' " . $postalcode . " ', " . $active . ")"; 
$stmtInsert = sqlsrv_query($conn, $sqlInsert); 

それは値で働いていた私はなぜわかりません。すべての値を設定した後、INSERTステートメントがどのように評価されるかを調べることをお勧めします。ステートメントを実行する代わりに、INSERTステートメントをscreen/pageに出力し、SQL Server Management Studioでデータベースに対して手動で実行します。

+0

なぜ、誤って動作していたのですか? –

関連する問題