【问题标题】:What does a colon before a literal in an SQL statement mean?SQL 语句中文字前的冒号是什么意思?
【发布时间】:2013-01-29 18:10:20
【问题描述】:

在变量前使用“:”是什么意思?

例如,此代码中的: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代码。

【问题讨论】:

  • 表示prepared statements的绑定变量。
  • 谢谢。你的回答有帮助。

标签: php mysql yii


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    :userId 是占位符

    根据 Yii 的 SQL statement 文档:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2011-10-20
        • 2012-06-27
        • 2012-09-09
        • 1970-01-01
        • 2012-10-09
        • 2020-07-13
        • 2021-01-14
        • 2020-05-21
        • 1970-01-01
        相关资源
        最近更新 更多