SQL 语句中文本前的冒号是什么意思


What does a colon before a literal in an SQL statement mean?

变量

前使用""是什么意思?

例如,:userId以下代码:

public function removeUser($userId)
{
 $command = Yii::app()->db->createCommand();
 $command->delete(
 'tbl_project_user_assignment',
 'user_id=:userId AND project_id=:projectId',
 array(':userId'=>$userId,':projectId'=>$this->id));
}

这是 Yii 框架中的 PHP,MySQL 代码。

冒号是一个常用字符,指示 SQL 语句中变量值的占位符。在这种情况下,这些占位符将在运行时被 userIdproject_id 的值替换。这对于避免 SQL 注入漏洞非常有用。

:userId 是一个占位符

根据 Yii 的 SQL 语句文档:

对于使用命名占位符的预准备语句,这将是一个 形式 :name 的参数名称。

正如thaidiotguy所提到的,这是一个与准备好的语句一起使用的字符,尤其是PDO。在PDO中,冒号表示以下内容是命名参数。