如何使用getparam与bindparam正确的方法

时间:2017-08-23 09:17:40

标签: php arrays pdo

我不断收到此错误消息。

参数号无效:绑定变量数与令牌数不匹配

我正在尝试将变量放在数组中。但我一直得到错误,有什么stmt我应该使用我失踪?你可以向我解释一下,或者推荐一些我能阅读的东西,以了解如何正确使用它们吗?

    $userA = $request->getParam('usera');   
    $userB = $request->getParam('userb');
    $userC = $request->getParam('userc');

    $sql = "SELECT *FROM admins";

  try {
    $db = new db();
    $db = $db->connect();
    $stmt = $db->prepare($sql);

    $stmt->bindParam(':Adminusera', $userA);
    $stmt->bindParam(':Adminuserb', $userB);
    $stmt->bindParam(':Adminuserc', $userC);

    $stmt->execute();

    $admin = $stmt->fetch(PDO::FETCH_OBJ);

    $db = null;

    if(!empty($admin)){
    $newUsers = array('a' => $userA, 'b' => $userB, 'c' => $userC);

    print_r($newUsers); }

1 个答案:

答案 0 :(得分:0)

抱歉,我认为你有绑定问题..... 这是你获取参数的方法

// $_GET parameters
$request->query->get('name');

// $_POST parameters
$request->request->get('name');

我这样做是因为如果有人遇到与之相关的问题,可以找到有用的东西

[使用bindParam]与PDOStatement :: bindValue()不同,变量被绑定为引用,并且仅在调用PDOStatement :: execute()时进行计算。

所以,例如:

$name = 'Alex';
$s = $dbh->prepare('SELECT name FROM students WHERE name = :name');
$s->bindParam(':name', $name); // use bindParam to bind the variable
$name = 'Mike';
$s->execute(); // executed with WHERE name = 'Mike'

$name = 'Alex';
$s = $dbh->prepare('SELECT name FROM students WHERE name = :name ');
$s->bindValue(':name ', $name ); // use bindValue to bind the variable's value
$name = 'Mike';
$s->execute(); // executed with WHERE name = 'Alex'