2013-07-05 99 views
-1

好吧,所以我有一个用户名表,poke1hp,poke2hp一路到poke6hp 我已经使它,所以我存储表,例如poke1hp在一边PHP变量现在的问题是我想从列中选择变量中的任何内容,并获取列中的内容。 所以他是我迄今为止所做的。pdo用php变量选择

这一侧存储表的名称$表名

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的HP。我说过在如果staments做工精细和列名保存在$表名,但对于一些resson选择是呼应了列名,而不是他在身边的列

我试图改变回音

echo $grabhpbaby2[$tablename]; 

echo $grabhpbaby2["$tablename"]; 

但仍然只获取列名称而不是列中的内容

+2

你的数据库设置是一个可怕的一个 –

+0

以及你将如何设置它,然后??? – user2442903

回答

2

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

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

你,因为你需要去改变它,并删除它周围的报价

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

更改此

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

以下

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

这是在y中正确设置占位符列我们准备查询:

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

echo $grabhpbaby2;