【发布时间】:2015-05-12 08:30:58
【问题描述】:
我是 PDO 的新手,一直在寻找一些答案,但找不到。由于某种原因,PDOStatement 对象最后总是输出 1。
例如当我这样做时
$username = 'Alexander';
$sql = "
SELECT username, email FROM user
WHERE
username = :username;
";
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':username', $username);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
echo '<pre>', print_r($result), '</pre>';
输出
Array
(
[username] => Alexander
[email] => alex@live.com
)
1
注意最后的 1。例如,当我使用 rowCount() 检查 更新语句后受影响的行我得到这样的东西
$username = 'martin';
$sql = "
UPDATE user
SET
username = :username
WHERE id = 1;
";
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':username', $username);
$stmt->execute();
$affected = $stmt->rowCount();
echo '<pre>', print_r($affected), '</pre>';
现在这不仅输出 1,而且输出 11,因为不管怎样,最后都会有额外的 1。如果我再次进行该查询,我不仅得到 0,而且得到 01。这正常吗?我如何再次区分 0、1 和 01,因为基本上每次都有额外的 1。我不明白这种行为,这额外的 1 到底是什么意思?
【问题讨论】:
-
这是因为你打印了
print_r()的返回值 ->echo '<pre>', print_r($result), '</pre>'; -
非常感谢我非常感谢您的回答,我不知道这是 print_r 函数。但是所有的反对票是怎么回事?
-
我认为因为一些人认为,这个问题可以通过阅读关于
print_r()的手册来避免。但最后没人能说清楚,因为人是奇怪的动物,所以你不知道他们为什么投反对票。 -
感谢您所做的一切!祝你有美好的一天,晚上或下午:)