:
在以下示例中的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