Php PDO获取多个值

Php PDO获取多个值,php,pdo,Php,Pdo,我决定使用PDO,因为有人说它比mysql好 我有这段代码,它应该获取uid、票证id和事件表 $query = $db->prepare("SELECT embedded_page.uid, embedded_page.ticket_id, embedded_page.event_table FROM embedded_page WHERE fbp_id = :fbp_id"); $query->bindValue(":fbp_id", $fbp_id, PDO::PARAM_IN

我决定使用PDO,因为有人说它比mysql好

我有这段代码,它应该获取uid、票证id和事件表

$query = $db->prepare("SELECT embedded_page.uid, embedded_page.ticket_id, embedded_page.event_table FROM embedded_page WHERE fbp_id = :fbp_id");
$query->bindValue(":fbp_id", $fbp_id, PDO::PARAM_INT);
$query->execute();

echo $compibot_user = $query->fetchObject()->uid;
echo $ticket_id = $query->fetchObject()->ticket_id;
echo $event_table = $query->fetchObject()->event_table;
查看代码,我回显了三个变量$compibot\u user$ticket\u id$event\u table

我只得到的结果是“1”,这是$compibot\u用户的结果

$ticket\u id和$event\u表没有响应任何内容。所以我一直在想为什么它不起作用。有什么解决办法吗?

试试这个:

$sql="SELECT embedded_page.uid, embedded_page.ticket_id, embedded_page.event_table FROM embedded_page WHERE fbp_id = ?";        
$stmt=$db->prepare($sql) or die("Prepare Error");
$stmt->bindParam(1, $fbp_id);       
$stmt->execute();   

$result=$stmt->fetch(PDO::FETCH_ASSOC);

echo  $result['YOUR COLUMN NAME']; //example echo $result['ticket_id']; 

$stmt->closeCursor();
$stmt=NULL;

也许可以试试这样的方法:

$query = $db->prepare("SELECT embedded_page.uid, embedded_page.ticket_id, embedded_page.event_table FROM embedded_page WHERE fbp_id = :fbp_id");
$query->execute( array( 'fbp_id' => $fbp_id ) );
list ( $compibot_user, $ticket_id, $event_table ) = $query->fetch( PDO::FETCH_NUM );

print "$compibot_user, $ticket_id, $event_table\n";
最简单的解决方案:

$query = $db->prepare('SELECT `embedded_page`.`uid`, `embedded_page`.`ticket_id`, `embedded_page`.`event_table` FROM `embedded_page` WHERE `fbp_id` = ?');
$query->execute(array($fbp_id));

while(($row = $query->fetch(PDO::FETCH_ASSOC)) !== false) {
   echo $row['uid'], ', ', $row['ticket_id'], ', ', $row['event_table'];
}

我非常确定,每次
fetchObject()
它都会选择下一个对象,因此您应该将
fetchObject()
的结果保存到一个变量中,然后引用该变量。(
$object=$query->fetchObject()
$compibot\u user=$object->uid
。这显然不是最简单的一个
而($row=$query->fetch())echo内爆(,,,$row);
将更简单更灵活。糟糕的解决方案,@YourCommonSense,这将导致每个字段的两倍,因为默认的获取模式是PDO::fetch_BOTH。您始终可以覆盖默认值setting@YourCommonSense方便,但可能不是最好的编码风格。它显然最适合这种情况,因为它允许您编写字段n艾姆斯只有一次,不是两次。为什么重复你自己?