在PHP脚本中传递变量:获取有关将PDO对象转换为int的消息

时间:2014-01-15 15:45:37

标签: php sql sql-server pdo

我有一个MSSQL表,其数据列(ApproverType)类型为smallint。它只包含1-9的数字。

我写了一个查询,当它与选定的电子邮件地址匹配时,在提交时获取此列的值:

$approv = $con->prepare("SELECT ApproverType FROM ApproverList WHERE ApproverEmail =     
:email");
$data = array('email'=>$_POST['approvEmail']);
$approv->execute($data);
$row = $approv->fetch(PDO::FETCH_BOTH);
$approvRole = $row['ApproverType'];

这很好用,变量传递给我的函数,但在帖子的最后,我得到以下注意:

Notice: Object of class PDO could not be converted to int in MyScript on line xxx

它没有导致任何停止工作,但它很烦人,我想消除它。我认为将我的查询更改为fetchAll会起作用,但实际上并没有返回任何内容。使用PDO :: FETCH_ASSOC可以获得我的价值,但不会消息消失。

以下是发生通知的行的示例。我在switch()语句中使用了这个变量。

switch($approvRole)
{
    case 5: //5 is $approvRole
    $url = someurl;
    break;
}

2 个答案:

答案 0 :(得分:0)

应该是

    $data = array(':email'=>$_POST['approvEmail']);

-------------------^

答案 1 :(得分:0)

在这一行:

 $row = $approv->fetch(PDO::FETCH_BOTH);

它返回了一个PDO对象,但它应该是一个数组吗?该代码之前可能存在错误。关于你如何准备$data,这就是为什么它没有正确获取。您也可以尝试:

 $row = $approv->fetch();

,我也认为它应该是: