2014-02-14 76 views
0

我想在PHP PDO中做一个查询,它将获取一个简单的结果。所以就像在我的查询中,我需要它找到列组为'Admin'的行,并显示组列中的内容。我知道我们已经知道它应该是什么[应该是管理员],但只是需要让查询工作。它只能从我的桌子上拿下1排,所以我需要forsearch?来自查询的PHP PDO结果

如果我将WHERE GROUP ='Admin'更改为WHERE id ='1',它可以正常工作。但我需要它,所以它可以是其中组=“管理员”

$sql2 = "SELECT * FROM groups WHERE group = 'Admin'"; 
$stm2 = $dbh->prepare($sql2); 
$stm2->execute(); 
$users2 = $stm2->fetchAll(); 

foreach ($users2 as $row2) { 
    print ' '. $row2["group"] .' '; 
} 

感谢

+0

数据库是什么样子? – Bonzo

+0

@Bonzo http://prntscr.com/2sbr51&为结构http://prntscr.com/2sbr83 – user3219007

回答

0

尝试在您的WHERE子句中使用wildcard

$sql2 = "SELECT * FROM groups WHERE group LIKE '%Admin%'"; 

因为在你的表中的值不真的AdminAdministrator然后使用LIKEwildcard将搜索包含管理员的记录。

1

组是MySQL中的保留字,这就是为什么它不起作用。一般来说,为列名和表名使用保留字是一个好主意。 尝试使用您的查询各地组反引号来解决这个问题,所以:

$sql2 = "SELECT * FROM groups WHERE `group` = 'Admin'"; 

而且你真的应该使用占位符值,因为你已经在使用事先准备好的声明这是一个小的变化。

编辑:只是为了澄清我最后一句关于占位符的评论。我的意思是这样的:

$sql2 = "SELECT * FROM groups WHERE `group` = ?"; 
$stm2->execute(array('Admin'));