jjzjj

bindparam

全部标签

PHP 在 PDOStatement::bindParam 中绑定(bind)重载属性时注意

当我尝试在PDOStatement::bindParam方法中绑定(bind)重载属性时,$stmt->bindParam(':'.$field.'',$this->$field,$pdoparam);...publicfunction__get($param){if(isset($this->$param))return$this->$param;}我收到通知Notice:IndirectmodificationofoverloadedpropertyMsgs::$posttimehasnoeffectin...经过一些研究,我发现了一个关于类似problem的错误报告在php.ne

php - 关于 PDO 和 bindparam 的说明

我是PDO的新手,不得不说到目前为止我喜欢它,但我对它使用的一些调用仍然有点不稳定,而且文档也不是那么可靠。我正在使用几个存储过程,根据我对PDO的了解,我不得不为此使用prepare。我构建了一个模块,用于存储有关由用户引起的任何错误的信息。我知道bindParam会转义任何引号并在将字符串插入数据库之前清理字符串,这不是我想要的。我想查看用户输入的字符串以进行故障排除。我试图放弃bindparam调用,但在尝试通过引用传递时遇到错误。有什么办法可以做到这一点?也愿意接受建议。谢谢。 最佳答案 bindParam本身不会“转义”或

php - 为什么我们需要在bindParam()中指定参数类型?

我有点困惑为什么我们需要在Php的PDO的bindParam()函数中指定我们传递的数据类型。例如这个查询:$calories=150;$colour='red';$sth=$dbh->prepare('SELECTname,colour,caloriesFROMfruitWHEREcaloriesbindParam(1,$calories,PDO::PARAM_INT);$sth->bindParam(2,$colour,PDO::PARAM_STR,12);$sth->execute();如果我不指定第三个参数,是否存在安全风险。我的意思是如果我只是在bindParam()中做:$

在php准备的语句中打电话给布尔值的成员函数bindparam()

因此,我在参考W3SCHOOLS之后,我正在尝试在PDO上进行一个项目,但我一直遇到此错误在布尔值上致电成员函数bindparam()这是我的代码。我不知道是什么原因造成的if(isset($data->title)&&isset($data->content)&&isset($data->lang)&&isset($data->show_on_site)){$response=array();try{$sql='INSERTINTOnewsposts(heading,content,author,language,show_on_page)VALUES(:title,:content,:au

php - bindParam() 中的 Mysqli 准备语句不起作用

就像往常一样,我正在寻找PHP的最佳实践,准备好的语句似乎是我现在应该闭着眼睛做的事情。所以我开始研究我发现的一些例子。运行脚本时出现此错误:Fatalerror:CalltoamemberfunctionbindParam()onanon-objectin/opt/lampp/htdocs/phpSecurity/PreparedStatments/Insert-Multi-Binded-Params/InsertSimpleMethod.phponline10这是代码。插入SimpleMethod.phpprepare("INSERTINTOcoisas(nome,telefone

php - 使用 PDO 插入 NULL 而不是空字符串

我有一个表,其中有一些可为空的字段,当用户在HTML表单字段中没有输入任何内容时,我想在该字段中插入NULL,而不是空字符串(这很重要,因为我稍后会在这些表上进行一些选择使用WHERExISNOTNULL等条件。但是,此版本的bindParam代码将空字符串而不是NULL插入到可空字段中。$stmt2->bindParam(':title',$title,PDO::PARAM_STR);我读了很多书,发现这是将null插入字段的答案:$stmt2->bindParam(':title',$title,PDO::PARAM_NULL);但这意味着我需要预先检查所有传递给可为空字段的参数以

php - bind_param() 有什么作用?

$resultSpendStmt=$connection->prepare(...);$array->bind_param("sdidi",$A,$B,$C,$D,$E);$array->execute();$array->store_result();$array->bind_result($F,$G,$H,$I,$J,$K);我仍然有点不确定bind_param的作用。谁能举例说明什么是means? 最佳答案 当您准备SQL语句时,您可以在列值所在的位置插入一个占位符(?),然后使用bind_param()来安全将该占位符替换为

php - PDO execute($input_parameter) 作为 bindParam/bindValue 保护免受 sql 注入(inject)?

execute($input_parameter)是否像bindParam/bindValue一样防止sql注入(inject)?如果答案是肯定的,bindParam()/bindValue()/execute()是否不受任何sql注入(inject)攻击?或者我需要采取措施防止此类攻击?感谢您的帮助! 最佳答案 就execute($input_parameters)与单独的bindParam/bindValue/execute步骤一样安全而言,答案基本上是肯定的。但是,您可能仍需要采取进一步的措施,具体取决于您构建传递给PDO::

php - PDOStatement::bindParam data_type 参数列表

是否有一个列表描述了您可以在PDOStatement::bindParam()中使用的所有data_type参数?如果没有,您通常使用什么,用于什么类型的字段?根据PHP手册:data_type使用PDO::PARAM_*常量的参数的显式数据类型。我知道PDO::PARAM_INT和PDO::PARAM_STR。我听说过PDO::PARAM_LOB但我不确定如何以及何时使用它。(约会?) 最佳答案 来自文档here:PDO::PARAM_BOOL(integer)Representsabooleandatatype.PDO::PAR

php - PDO 为带有命名占位符的 INSERT 和 ON DUPLICATE KEY UPDATE 准备语句

我想将PDOINSERT和UPDATE准备好的语句切换为INSERT和ONDUPLICATEKEYUPDATE因为我认为它会比我目前正在做的更有效率,但我无法弄清楚与命名占位符和bindParam一起使用的正确语法。我在SO上发现了几个类似的问题,但我是PDO的新手,无法成功地根据我的标准调整代码。这是我尝试过的方法,但它不起作用(它不插入或更新):try{$stmt=$conn->prepare('INSERTINTOcustomer_info(user_id,fname,lname)VALUES(:user_id,:fname,:lname)''ONDUPLICATEKEYUPDA