:
在以下示例中的id
之前的含義是什麼?有必要嗎?當在PHP PDO中使用bindValue()時,「:」是什麼意思?
$sth->bindValue(':id', $id, PDO::PARAM_INT);
我可以說:id
是變量?如果PDO::PARAM_INT
沒有必要,爲什麼我需要使用它?
:
在以下示例中的id
之前的含義是什麼?有必要嗎?當在PHP PDO中使用bindValue()時,「:」是什麼意思?
$sth->bindValue(':id', $id, PDO::PARAM_INT);
我可以說:id
是變量?如果PDO::PARAM_INT
沒有必要,爲什麼我需要使用它?
:id
是準備好的查詢的命名佔位符。在你的代碼在其他地方,是沿着線查詢:
SELECT stuff FROM something WHERE id = :id
是獲得通過PDO的
prepare
功能運行
。
If
PDO::PARAM_INT
is not necessary, why would I need to use it?
安全性/數據一致性。見PDO::PARAM_INT is important in bindParam?
What does
:
mean before id in the example below? Is it necessary?
$sth->bindValue(':id', $id, PDO::PARAM_INT);
是的,這是必要的。在PDOStatement::bindValue中定義:id
是您的參數標識符的命名佔位符。如果您使用問號佔位符,則您的參數標識符應爲1
。
指定佔位符的形式必須與:id
一樣。如果您的指定佔位符沒有該表單,則會導致錯誤。
WHERE id = ::id
Can I say :id is a variable?
沒有用,:id
是你parameter-identifier
If PDO::PARAM_INT is not necessary, why would I need to use it?
聲明預期的數據類型爲一個很好的安全策略(不是你可以依靠這只是爲了安全課程)。如果您使用PDOStatement::bindParam,則可以定義數據類型的長度以增加安全性。
What does : mean before id in the example below? Is it necessary?
沒什麼特別的。這只是一種語法。就像在php變量前面的$符號一樣。在查詢中,必須讓解析器區分佔位符和其他查詢部分。因此,在bindValue()中使用完全相同的名稱是有意義的
Can I say :id is a variable?
非常多的是。通過meaming它是一個變量,但是爲了不使php變量混淆,它被稱爲「佔位符」。
If PDO::PARAM_INT is not necessary, why would I need to use it?
它與安全性完全無關。您可能只想使用此修飾符來告訴數據庫您正在發送一個整數。說到mysql,這個數據庫對於數據類型是quiye容忍的,並且幾乎可以在任何地方省略類型修飾符 - 在這種情況下,數據將被綁定爲字符串。您可能希望很少顯式設置它:僅當您在LIMIT子句中使用佔位符或發送數學中涉及的bigint值時。
如果您將一個字符串傳遞給聲明爲只接受整數的變量值與PDO :: PARAM_INT會發生什麼?如果出現錯誤,你可以稱之爲一種更「安全」的做事方式嗎?但是,你會有一個答案。你將如何證明自己?順便說一句,我真的很喜歡你的個人資料圖像?它讓我想起某人。 ;)如果你投了我票(是的,我知道你有多愛我和我的答案),謝謝你,這意味着來自你的很多。 –
佔位符在手冊中進行了解釋:http://php.net/manual/en/pdostatement.bindparam.php – mario