0

这可能听起来很傻,而且可能听起来不安全,但我的 poke1hp 一直到 poke6hp 都有列。我需要这样做,以便如果变量设置为 1,它将选择并回显 poke1hp 列,如果变量为 6,它将回显 poke6hp

所以他是我得到的应该工作但不是。

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";}

我也使用 $tablename 进行了选择,此时我回显了 $tablename 并且所有工作正常,列名在那里。现在我尝试使用我在上面设置的变量旁边的列名

// here we grab the users hp 
$grabhp = $db->prepare("select '$tablename' from new_battles WHERE username = ?");
$grabhp ->execute(array($_SESSION['username']));
$grabhp2 = $grabhp ->fetch(); 

echo $grabhp2 ['$tablename'];

但是我什么也没打印出来……我知道我可以有行而不是列,但我已经这样编码了……

4

1 回答 1

0

变量不在单引号内展开:

http://php.net/manual/en/language.types.string.php

我建议不要在您的示例中使用引号。尝试:

echo $grabhp2[$tablename];

在您提供的示例中,您还错误地处理了 MySQLi 准备好的语句。

这是一个参考:

http://php.net/manual/en/mysqli.quickstart.prepared-statements.php

于 2013-07-04T02:35:15.453 回答