0

我遇到了从我的 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从 table中获取值People。很简单。但是,发生的情况是该数字被附加了两次。例如,sayp_id等于 1。this->p_id将等于 11。或者p_id等于 2,输出将为 22。我在 MySQL 中执行了此查询,并且该值是正确的。我不确定我的 php 代码中发生了什么。也许与内爆有关?我不知道。

任何见解将不胜感激。

另外:我还应该声明它p_id是唯一的,因此只能返回一个值。

4

1 回答 1

0

首先,您的 fetch 语句没有返回您认为的内容。默认输出数组将同时具有列名键和数字键,如下所示:

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

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

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

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

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

例如:

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

参考:

于 2012-11-04T06:37:12.160 回答