Php 在mysql数据插入过程中,数组使用和bindParam使用有什么区别?

Php 在mysql数据插入过程中,数组使用和bindParam使用有什么区别?,php,mysql,arrays,Php,Mysql,Arrays,我正在使用类准备mysql配置设置。我对此感到困惑。我总是使用bindParam。也可以使用数组进行插入。我的意思是,数组和bindparam之间有什么区别 eg阵列 $query = $db->prepare("INSERT INTO users SET username = :uname, password = :upass, email = :umail"); $insert = $query->execute(array( "upass" => "123456",

我正在使用类准备mysql配置设置。我对此感到困惑。我总是使用bindParam。也可以使用数组进行插入。我的意思是,数组和bindparam之间有什么区别

eg阵列

$query = $db->prepare("INSERT INTO users SET
username  = :uname,
password = :upass,
email = :umail");
$insert = $query->execute(array(
  "upass" => "123456",
  "umail" => "user@user.com",
  "uname" => "username",
));
if ( $insert ){
$last_id = $db->lastInsertId();
}
乙二醇


考虑到使用
execute
不能选择数据类型(它总是
PDO::PARAM_STR
)这一事实,两者之间只有一个主要区别(来自核心)。是通过引用,而不是。做同样的事情,但是两次

内部(在C语言中),
bindValue
执行的方法相同。调用的方法名为

另一方面,
bindParam
other方法被调用

这意味着
bindValue
多次调用
execute
调用的同一方法,而bindParam调用绑定方法作为引用,并且仅在调用
execute
时“真正注册”参数

考虑到通过引用绑定,只能使用
bindParam

//fictional code
$stmt= $pdo->prepare("INSERT INTO table (column) VALUES (:value)");
$stmt->bindParam(":value", $randomValue);

for($i = 0 ; $i < 1000; $i))
{    $randomValue = rand(1000,1000000);
    $stmt->execute();
}
//虚构的代码
$stmt=$pdo->prepare(“插入表(列)值(:值)”);
$stmt->bindParam(“:value”,$randomValue);
对于($i=0;$i<1000;$i))
{$randomValue=兰特(10001000000);
$stmt->execute();
}

值得吗?也许,带有多个参数的复杂插入的
while
可以通过重新绑定新参数或大量参数来减少开销。

代码清晰性。这只是一种风格上的选择。所以,没有任何关于安全或速度的东西。没有,一点也没有。这些参数都会受到约束,我现在理解得很好。谢谢。您应该注意,如果使用execute方法,所有值都被视为PDO::PARAM_STR。使用bindParam,您可以定义数据类型。。。
//fictional code
$stmt= $pdo->prepare("INSERT INTO table (column) VALUES (:value)");
$stmt->bindParam(":value", $randomValue);

for($i = 0 ; $i < 1000; $i))
{    $randomValue = rand(1000,1000000);
    $stmt->execute();
}