如何使用PDO准备语句显示列值

时间:2017-06-30 20:06:57

标签: php mysql pdo prepared-statement

我是PDO的新手,但似乎无法工作如何返回值

$stmt = $pdo->prepare('SELECT * FROM categories WHERE categories_url = ?');
$stmt->execute([$url]);
if($stmt->fetchColumn()>0) {
    $row = $stmt->fetch();
    echo $row['categories_name'];
    echo 'test';
}

'test'回声确定,但$ row值不显示。我也试过print_r($row),没有任何表现。我以为我需要使用fetch()方法设置$ row变量,这不对吗?这有什么不对?

**更新**

我为fetchColumn删除了if语句,它有效,为什么呢?如果fetchColumn方法在fetch()之前出现了吗?

如果是这样,只有在有结果的情况下如何设置$ row变量?

2 个答案:

答案 0 :(得分:0)

使用fetch(PDO::FETCH_ASSOC),然后按名称访问所需的元素。

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo $row['categories_name'];
}

答案 1 :(得分:-1)

我认为execute需要一个类似

的数组
 $sth->execute(array($calories, $colour));

只需按照php.net

上的示例进行操作即可
/* Execute a prepared statement by passing an array of insert values */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < ? AND colour = ?');
$sth->execute(array($calories, $colour));

并尝试使用fetchAll,而不是在多行

时获取