我遇到了从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
是唯一的,因此只能返回一个值。
答案 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'
参考文献: