2013-01-29 16 views
5

Sử dụng ":" trước biến là gì?Dấu hai chấm trước một chữ trong câu lệnh SQL có ý nghĩa gì?

Ví dụ, :userId trong mã này:

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)); 
} 

Đây là PHP, mã MySQL trong khuôn khổ Yii.

+2

Nó biểu thị biến liên kết cho các câu lệnh đã chuẩn bị. – datasage

+0

Cảm ơn bạn. Câu trả lời của bạn đã giúp. –

Trả lời

6

Dấu hai chấm là ký tự chung cho biết trình giữ chỗ cho giá trị biến trong câu lệnh SQL. Trong trường hợp này, các trình giữ chỗ đó sẽ được thay thế bằng giá trị userIdproject_id khi chạy. Điều này là rất tốt để tránh lỗ hổng SQL injection.

+0

Cảm ơn bạn. Nó rất hữu ích. –

0

Như đã nói, Thaidiotguy đề cập đến, đó là một ký tự được sử dụng chung với các câu lệnh chuẩn bị đặc biệt là với PDO. Trong PDO dấu hai chấm nói rằng sau đây là một tham số được đặt tên.

3

: userId là một placeholder

Theo tài liệu Yii cho SQL statement:

Đối với một tuyên bố sẵn sàng sử dụng tên placeholders, đây sẽ là một tên tham số của mẫu : tên .

+0

Rất hữu ích. Cảm ơn –