pdo选择一个php变量

时间:2013-07-05 13:52:43

标签: php pdo php-5.3

好的,所以我有一个用户名,poke1hp,poke2hp一直到poke6hp的表 我已经做到了所以我将表格存储在例如poke1hp的一个php变量中,问题是现在我想要从变量中的列中选择并获得该列中的所有内容。 所以他就是我迄今为止所做的。

这将表名存储在$ tablename

的旁边
if ($_SESSION['pickedslot'] == '1') {$tablename = "poke1hp";}
if ($_SESSION['pickedslot'] == '2') {$tablename = "poke2hp";}
if ($_SESSION['pickedslot'] == '3') {$tablename = "poke3hp";}
if ($_SESSION['pickedslot'] == '4') {$tablename = "poke4hp";}
if ($_SESSION['pickedslot'] == '5') {$tablename = "poke5hp";}
if ($_SESSION['pickedslot'] == '6') {$tablename = "poke6hp";}

然后我做了一个pdo选择,看看我是否可以抓住列中的内容

$grabhpbaby = $db->prepare("select '$tablename' from new_battles WHERE username = ?");
$grabhpbaby->execute(array($_SESSION['username']));
$grabhpbaby2 = $grabhpbaby->fetch(); 

echo $grabhpbaby2[$tablename]; 

由于某种原因,select会回显出$ tablename中的列名,而不是列中的列名。我正在尝试制作一个战斗脚本,我将用户hp / life存储在数据库中,我正在存储他们在会话变量pickedslot旁边选择的挑选怪物。因此,如果用户在怪物上,那么怪物1s生命/ hp将被存储在poke1hp列的一侧,所以我试图回应那里的怪物那一列的hp。我有说过吗如果staments工作正常并且列名存储在$ tablename中,但是对于某些resson,select会回显列名而不是列中的那些

我尝试将回声更改为

echo $grabhpbaby2[$tablename];

echo $grabhpbaby2["$tablename"];

但仍然只获取列名,而不是列

中的列名

3 个答案:

答案 0 :(得分:2)

这是因为您将字段名作为文字值传递给查询。

$grabhpbaby = $db->prepare("select '$tablename' from new_battles WHERE username = ?");

你必须改变它并删除它周围的引号

$grabhpbaby = $db->prepare("select $tablename from new_battles WHERE username = ?");

答案 1 :(得分:0)

更改此

$grabhpbaby = $db->prepare("select '$tablename' from new_battles WHERE username = ?");

以下

$grabhpbaby = $db->prepare("select $tablename from new_battles WHERE username = ?");

答案 2 :(得分:0)

这是因为您需要在准备查询中正确设置占位符列:

$grabhpbaby = $db->prepare('select ' . $tablename . ' from new_battles WHERE username = ?');
$grabhpbaby->execute(array($_SESSION['username']));
$grabhpbaby2 = $grabhpbaby->fetchColumn(); 

echo $grabhpbaby2;