我有一个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;
}
答案 0 :(得分:0)
应该是
$data = array(':email'=>$_POST['approvEmail']);
-------------------^
答案 1 :(得分:0)
在这一行:
$row = $approv->fetch(PDO::FETCH_BOTH);
它返回了一个PDO对象,但它应该是一个数组吗?该代码之前可能存在错误。关于你如何准备$data
,这就是为什么它没有正确获取。您也可以尝试:
$row = $approv->fetch();
,我也认为它应该是: