如何将PDO :: exec()与PDO :: bindParam()一起使用?

时间:2016-02-13 23:51:58

标签: php mysql pdo

我需要执行UPDATE,INSERT和DELETE,绑定参数并计算受影响的行。

E.g。

<?php
// Class UserProfData ... new PDO() ...

$query = "UPDATE CadUsers
          SET aboutme = :aboutme
          WHERE userid = $UserID";

// Any function to bind... using exec() to count affected rows.
$instance->bindParam(':aboutme', $colour, PDO::PARAM_STR); // 'My name is Mark Larry B. Gates.'

$Affected_Rows = $instance->exec($query); // Affected: [false/NULL/0/1] rows
?>

PDO::prepare() + bindParam() + execute()无效。

1 个答案:

答案 0 :(得分:0)

您不能将PDO :: exec()与PDO :: bindParam()一起使用。

必须使用PDO :: prepare()+ execute()+ rowCount()。您应该始终使用正确的方法,即使由于您的某些错误而暂时无法正常工作。您必须修复该错误,而不是尝试错误的方法。

请注意,您应该绑定查询中使用的所有变量

$query = "UPDATE CadUsers SET aboutme = ? WHERE userid = ?";
$stmt = $pdo->prepare($query);
$stmt->execute([$color, $UserID]);
$rows = $stmt->rowCount();