2013-07-05 196 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;