传递数据类型和执行没有它们的数组之间的区别

时间:2017-09-26 09:34:02

标签: php mysql pdo

我只是想知道这两组代码是否做同样的事情,如果不是有什么区别?

$connect= new CONNECT();
$sql = ("query here");
$stmt = $connect->runQuery($sql);               
$stmt->bindParam(':sample', $_POST['sample'], PDO::PARAM_STR);
$stmt->bindParam(':sample2', $_POST['sample2'], PDO::PARAM_STR);
$stmt->bindParam(':sample3', $_POST['sample3'], PDO::PARAM_STR);
$stmt->execute();

======================= AND ======================= =

$connect= new CONNECT();
$sql = ("query here");
$stmt = $connect->runQuery($sql);   
$stmt->execute(Array(
                    ':sample1'      =>  $_POST['sample'],
                    ':sample2'      =>  $_POST['sample2'],
                    ':sample3'      =>  $_POST['sample3']
                    ));

仅供参考,两者都很完美,只是想知道我是否使用其中任何一个获得全部安全性好处。感谢。

1 个答案:

答案 0 :(得分:5)

通过将参数与$stmt->execute()方法一起传递,数组中的所有值都作为PDO::PARAM_STR传递给具有$stmt->bindParam()函数的语句。

使用$stmt->bindParam()函数,您可以使用PDO::PARAM_*

定义传递的数据类型

详细了解PDO::PARAM_