0

コントローラーに次のコードがありますが、挿入クエリは発生していません。データベースにpostgresqlを使用しています。

 $connection = Yii::app()->db2 ;
 $command1 = "INSERT INTO USERS (username, user_type) VALUES (:username,:user_type)";
 $cmd1 = $connection->createCommand($command1);
 $cmd1->bindParam(":username",$username,PDO::PARAM_STR);
 $cmd1->bindParam(":user_type",'USER',PDO::PARAM_STR);
 $cmd1->execute();
 echo "Completed...";

コードのどこが間違っていますか。エコー「完了...」; 印刷していません。postgressql ログを有効にしましたが、挿入クエリは実行されません。ブラウザにエラーは表示されず、空白のページのみが表示されます。

以下のフォーマットは私のテーブルに挿入するために働いています。クエリは postgresql ログに記録されます。

$command->insert('users', array(
                                              'username'=>$username,
                                              'user_type'=>'USER',
                                              ));

前もって感謝します。

4

2 に答える 2

4

「 bindParam()」の代わりに「bindValue()」を使用してみてください。

$connection = Yii::app()->db2 ;
 $command1 = "INSERT INTO USERS (username, user_type) VALUES (:username,:user_type)";
 $cmd1 = $connection->createCommand($command1);
 $cmd1->bindValue(":username",$username,PDO::PARAM_STR);
 $cmd1->bindValue(":user_type",'USER',PDO::PARAM_STR);
 $cmd1->execute();
 echo "Completed...";
于 2013-09-18T06:30:40.567 に答える
1

値「USER」をバインドする必要はありません。次のようにクエリに直接書き込むことができます。

 $connection = Yii::app()->db2 ;
 $command1 = "INSERT INTO USERS (username, user_type) VALUES (:username,'USER')";
 $cmd1 = $connection->createCommand($command1);
 $cmd1->bindParam(":username",$username,PDO::PARAM_STR);
 $cmd1->execute();
 echo "Completed...";
于 2013-09-18T06:35:04.240 に答える