我做了一個函數 'UpdateSysAcc()' 在yii2模型更新數據庫表的行:createCommand()函數返回值爲false
profile.php
namespace app\models;
use yii\db\ActiveRecord;
use Yii;
use yii\base\Model;
use app\models\Location;
class Profile extends ActiveRecord {
public $Fname;
public $Lname;
public $Password;
public $Mail;
public $Mobile;
public static function db() {
$db = new \yii\db\Connection([
'dsn' => 'mysql:host=localhost;dbname=cms',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
]);
return $db;
}
public function UpdateSysAcc($model) {
echo $this->db()->createCommand("UPDATE `cms_profile` SET `UserName`='$model->Fname $model->Lname',`Mobile1`=$model->Mobile,`Mail`='$model->Mail',`ProfileImg`='db.jpg' WHERE `Mail`='$this->Mail'")->execute();
}
}
控制器文件對於上述模型是:
ProfileController.php
namespace app\controllers;
use yii;
use yii\web\Controller;
use app\models\Profile;
use app\models\Location;
class ProfileController extends Controller {
public function actionIndex() {
$model = new Profile;
$obj = new Location;
if ($model->load(\Yii::$app->request->post())) {
if ($model->UpdateSysAcc($model)) {
return $this->render('index', ['model' => $model, 'obj' => $obj]);
} else {
return $this->render('index', ['model' => $model, 'obj' => $obj]);
}
}
}
}
現在ABOV問題e代碼是UpdateSysAcc()模型函數中的UPDATE QUERY成功更新表數據,但createCommand()返回false值。
任何人都可以幫助我在這種情況下這個代碼有什麼問題?對於db表
數據庫架構如下:
CREATE TABLE IF NOT EXISTS `cms_profile` (
`Id` int(4) NOT NULL,
`SysUniqueId` varchar(50) NOT NULL,
`UserName` varchar(30) NOT NULL,
`Dob` date NOT NULL,
`LastActivity` datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP,
`Mobile1` varchar(15) NOT NULL,
`Mobile2` varchar(15) NOT NULL,
`Mail` varchar(50) NOT NULL,
`ProfileImg` varchar(50) NOT NULL,
`DrName` varchar(50) NOT NULL,
`DrMobile` varchar(15) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
使用從PHP端或MySQL端的concat作爲用戶名,這裏是mysql的方式'UserName = concat('$ model-> Fname,'','$ model-> Lname')' –
它的工作原理:D 謝謝bro –
'$ this-> db() - > createCommand(「UPDATE'cms_systemregister' SET'Fname' ='$ model-> Fname','Lname' ='$ model-> Lname','Mobile' = $ model - > Mobile,'Mail' ='$ model-> Mail','password' ='$ model-> Password'WHERE'Mail' ='$ this-> Mail'「) - > execute();' @AbhikChakraborty - 這個命令也發生同樣的問題...... 我用這個createCommand()重複的錯誤是什麼? –