【问题标题】:bind parameter to pdo function将参数绑定到 pdo 函数
【发布时间】:2012-10-29 16:59:43
【问题描述】:

我正在尝试编写以下函数来显示 MySQL 表的内容。

$q=$_GET["q"];
function risk_allocation($db)  
  {    
    $result = $db->query("select r.risks as risks,r.risktype as risktype,j.job as job from risks r LEFT OUTER JOIN `jobsrisks` j on r.risks = j.risk and j.job=:q"); 
    $result ->bindParam(':q', $q, PDO::PARAM_INT);
    return $result; 
  }
        $allocationlist = risk_allocation($db); 

然后我调用函数:

while($row = $allocationlist->fetch(PDO::FETCH_ASSOC)) 
{
echo $line['risks'];
echo $line['risktype'];
}

我收到错误消息:

Fatal error: Call to a member function bindParam() on a non-object in /home/she/public_html/versionfour/getrisksperjob.php on line 11

第 11 行在哪里

$result ->bindParam(':q', $q, PDO::PARAM_INT);

我觉得这是一个简单的问题,因为我刚刚被介绍给 pdo,但一如既往地感谢任何帮助。

更新

根据建议的答案,我的代码现在如下执行查询并包含变量 q。但是仍然会发生相同的错误。感谢到目前为止的帮助,有什么想法吗?

致命错误:在第 11 行的 /home/she/public_html/versionfour/getrisksperjob.php 中的非对象上调用成员函数 bindParam()

function risk_allocation($db,$q)  
  {    
    $result = $db->query("select r.risks as risks,r.risktype as risktype,j.job as job from risks r LEFT OUTER JOIN `jobsrisks` j on r.risks = j.risk and j.job=:q"); 
    $result ->bindParam(':q', $q, PDO::PARAM_INT);
    $result->execute();
    return $result; 
  }
  $allocationlist = risk_allocation($db,$q); 

【问题讨论】:

  • 您仍然没有按照 JvdBerg 的回答中的建议进行准备。

标签: php mysql pdo


【解决方案1】:

您忘记execute查询,而且您需要准备而不是调用查询:

$result = $db->prepare("select r.risks as risks,r.risktype as risktype,j.job as job from risks r LEFT OUTER JOIN `jobsrisks` j on r.risks = j.risk and j.job=:q"); 
$result->bindParam(':q', $q, PDO::PARAM_INT);
$result->execute();

【讨论】:

    【解决方案2】:

    1.你forgot to execute query

    $result->execute();
    

    2.$qoutside function so you will never get value of that inside function.传递$q作为函数的第二个参数

    $q=$_GET["q"];
    function risk_allocation($db,$q)  
      {    
        $result = $db->prepare("select r.risks as risks,r.risktype as risktype,j.job as job from risks r LEFT OUTER JOIN `jobsrisks` j on r.risks = j.risk and j.job=:q"); 
        $result ->bindParam(':q', $q, PDO::PARAM_INT);
        $result->execute();
        return $result; 
      }
      $allocationlist = risk_allocation($db,$q); 
    

    【讨论】:

      猜你喜欢
      • 2016-06-29
      • 1970-01-01
      • 2017-01-29
      • 1970-01-01
      • 2018-02-26
      • 2013-11-01
      • 1970-01-01
      • 2013-10-24
      • 2013-09-16
      相关资源
      最近更新 更多