从PDO查询返回值的问题

时间:2012-11-04 06:31:36

标签: php mysql pdo

我遇到了从PDO语句返回的值的问题。

这是我的代码:

//Execute test
$this->checkConnect();
$stmt = $this->dbh->prepare("SELECT p_id FROM People WHERE lastName = :param1 AND firstName = :param2");
$stmt->bindParam(':param1', $this->lName);
$stmt->bindParam(':param2', $this->fName);
$stmt->execute();
$count = $stmt->rowCount();

//Determine value of test
if($count == FALSE)
{
    return FALSE;
}
else
{
    $dummyvar = $stmt->fetch();
    $this->p_id = implode($dummyvar);
}

当我浏览我的数据库记录时,我注意到某个值与我输入的内容有关。当我执行查询时,它应该从表p_id中获取People的值。很简单。但是,会发生的事情是该数字会附加两次。例如,假设p_id等于1. this->p_id将等于11.或者p_id等于2,输出将为22.我已在此内执行此查询MySQL和值是正确的。我不确定我的PHP代码中发生了什么。内爆可能与内爆有关吗?我不确定。

任何见解都将受到赞赏。

补充:我还应说明p_id是唯一的,因此只能返回一个值。

1 个答案:

答案 0 :(得分:0)

首先,你的fetch语句没有返回你的想法。默认输出数组将同时包含列名和数字键,如下所示:

array(
    0 => 1,
    'pid' => 1,
)

您可能只想获得一个数字索引的数组。像这样使用PDO::FETCH_NUM

$dummyvar = $stmt->fetch(PDO::FETCH_NUM);

其次,如果要输出多个字段(显然不是这种情况),那么你必须修复你的内爆语句。你必须告诉它在不同的数组值之间放置什么字符。

$this->p_id = implode(' ', $dummyvar);

例如:

echo implode( ', ', array('a', 'b', 'c') );
> 'a, b, c'

参考文献: