我正在使用Yii与PHP和Sql Server 2008 R2。谁能告诉我问题出在哪里?
public function actionUpdate($id)
{
$model=$this->loadModel($id);
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['Hold']))
{
$model->attributes=$_POST['Hold'];
$model->startTimeHour=cc("select code from Lookup where name='$model->startTime' and type='starttime'")->queryScalar();
if($model->save())
$this->redirect(array('view','id'=>$model->id));
}
$this->render('update',array(
'model'=>$model,
));
}
模型$model->startTime
在Dropdown中保留值。这也是代码。
<div class="control-group">
<label class="control-label"><?php echo $form->labelEx($model,'startTime'); ?></label>
<div class="controls">
<?php echo $form->dropDownList($model,'startTime',$this->_startTime); ?>
<span class="help-inline"><?php echo $form->error($model,'startTime'); ?></span>
</div>
</div>
此行动作更新错误($ id)
$model->startTimeHour=cc("select code from Lookup where name='$model->startTime' and type='starttime'")->queryScalar();
错误讯息:
CDbCommand无法执行SQL语句:CDbCommand无法准备SQL语句
答案 0 :(得分:1)
cc("")
问题:你有用的别名吗?
function cc($sql){
return Yii::app()->db->createCommand($sql);
}
我建议您不要使用用户输入来创建SQL。在CActiveRecord中进行验证或不进行验证。绑定参数是SQL准备的最佳实践。此功能允许您不考虑SQL注入和参数转义。
很快,请更换
cc("select code from Lookup where name='$model->startTime' and type='starttime'")->queryScalar();
到
cc("select code from Lookup where name = :name and type = 'starttime'")->bindValues([':name' => $model->startTime])->queryScalar();
但是对于确切的答案我需要看看你的表Lookup的“创建语句”。
答案 1 :(得分:0)
感谢大家的回复。我的问题已经解决了......
我换线
$model->startTimeHour=cc("select code from Lookup where name='$model->startTime' and type='starttime'")->queryScalar();
到
$model->startTimeHour=date('H',strtotime($model->startTime));