【问题标题】:how to use getparam with bindparam the correct way如何正确使用 getparam 和 bindparam
【发布时间】:2017-08-23 09:17:40
【问题描述】:

我不断收到此错误消息。

无效的参数号:绑定变量的数量与标记的数量不匹配

我正在尝试将变量放在一个数组中。但我不断收到错误消息,我应该使用我缺少的任何 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); }

【问题讨论】:

  • 通常,php 错误信息也会显示错误发生的行。真的是你创建数组的那一行吗?
  • @mixable 没有真正显示一行,我正在使用邮递员,当我删除 bindparam 部分时,数组显示空值
  • 你能把整个代码贴出来吗?有些东西不见了,通过向我们展示我们无法弄清楚的部分
  • 老实说这是整个代码,我是绑定参数的新手,如果没有$db = new db(); $db = $db->connect(); $stmt = $db->prepare($sql); $stmt->execute();就不能使用它吗?
  • $sql ?男人编辑你的帖子添加你的整个功能。

标签: php arrays pdo


【解决方案1】:

对不起,我以为你的绑定有问题..... 这样就可以获取参数了

// $_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'

【讨论】:

  • 谢谢你的解释,但我需要知道的是,当有人发布到我的函数时,我不能使用 getparam 捕获他们在帖子中发送的值并将它们分配到数组中吗?
  • 谢谢哥们,最后一个问题$request->request->get('name');$request->getParam('name'); 有什么区别
  • $request->request->get('name'); 让你从请求中获取 POST 数据 $request->getParam('name'); 应该是你框架中的一些方法。
猜你喜欢
  • 2015-04-27
  • 2019-10-03
  • 1970-01-01
  • 2013-02-14
  • 2012-04-09
  • 2023-03-18
  • 2019-01-31
  • 2023-04-03
  • 2018-12-04
相关资源
最近更新 更多