当前位置: 首页 > 面试题库 >

传递给PDOStatement :: bindParam()的参数名称的前导冒号是否可选?

苗学民
2023-03-14
问题内容

将表单的命名参数传递:name给时PDOStatement::bindParam(),无论是否使用前导冒号都似乎有效。

即这:

$statement->bindParam(':name', $var);

或这个:

$statement->bindParam('name', $var);

似乎有效。

这是有关的文档
PDOStatement::bindParam()

参数

参数标识符。对于使用命名占位符的预备语句,这将是 :name 形式的参数 名称。 对于使用问号占位符的准备好的语句,这将是参数的1索引位置。

这是否意味着可以不使用结肠?


问题答案:

不可以,因为文档中没有提到这一点,所以我认为可以肯定地认为这种行为不受官方支持,因此不应该被依赖。

但是,它确实确实起作用了(至少在PHP5.3.24中有效)-如果缺少冒号,则会在内部将其添加到参数中



 类似资料:
  • 问题内容: 与在或中使用的方式类似: 问题答案: 是。 如果你不理会关键字参数,这很简单并且可以工作: 如你所见,Python将为你提供一个包含所有参数的元组。 对于关键字参数,你需要将其作为单独的实际参数接受,如的所示。

  • 问题内容: 我有一个名为testForNull的Java函数 我用它来测试多个对象以确保它们不为空。但是,我无法以这种方式告诉变量名称。 例如。如果我说 我不能说出三行中的哪一行导致了“对象为空”输出。当然,我可以简单地向函数添加另一个参数, 但是我想知道是否可以在不显式传递变量的情况下推断出变量的名称。谢谢。 问题答案: 考虑参数可能不是变量(因此没有名称):

  • 问题内容: 我想做这样的事情: 但是我得到这个错误 对成员’init()’的不明确引用 我知道我可以写 但是我想知道是否还有另一种方式。 问题答案: 问题在于不存在 仅 具有参数的初始化程序。 __ 目前只存在: 尽管该参数具有默认值,但是编译器仅在初始化程序的调用位置为您“填充”该默认值。 获取对函数本身的引用时,不会部分应用默认参数值,编译器也不会为默认参数值的所有可能组合生成额外的重载。后者

  • 我想缓存以下结构的方法: 对于

  • 问题内容: 如果我有 我如何在内部找出现在由表示的变量称为? 问题答案: 这是不可能的。即使是按引用传递也不会帮助您。您必须将名称作为第二个参数传递。 但是,您肯定要问的 不是 解决问题的好方法。

  • 我对Java还很陌生,所以这肯定会是一个愚蠢的问题。 这是安全的还是有什么问题?