提问人:s1h4d0w 提问时间:4/9/2014 更新时间:4/9/2014 访问量:53
变量变量不起作用
Variable variable not working
问:
我有一些代码似乎不起作用。我正在使用表单来发布一个值(绿色、蓝色、红色等),并让它使用该发布值作为变量名称的一部分在数据库中查找某些内容。
$mine = 'green';
$querymine = $dbcon->prepare('SELECT * FROM mine WHERE playerid = :playerid');
$querymine->execute(array(
'playerid' => $playerid
));
$rowmine = $querymine->fetch(PDO::FETCH_ASSOC);
if (${'rowmine[\'has'.$mine.'\']'} == 0) {
header("location:mine.php");
die();
}
它正在查找列“hasgreen”,在本例中为 INT 4。问题是,它告诉我$rowmine['hasgreen']是空的,因此我被踢回了“我的.php”。我不确定问题出在哪里,也许是在变量名称中使用了\'?
答:
1赞
CMPS
4/9/2014
#1
不需要 ,试试这个:{}
if ($rowmine['has'.$mine] == 0)
3赞
ThiefMaster
4/9/2014
#2
你有一个数组。这里没有理由使用变量变量。
您可以简单地使用!$rowmine['has'.$mine]
由于您可能是初学者:如果您使用变量,您应该始终考虑使用数组。变量是获取不可读的意大利面条代码的好方法。
评论
0赞
s1h4d0w
4/9/2014
谢谢,它有效!我确实是一个初学者,试图通过谷歌搜索和实验来学习 PHP。
0赞
ThiefMaster
4/9/2014
请非常小心。当你搜索PHP教程和其他东西时,有大量的废话(是的,粗体大写的废话)。特别是如果它不是最近的。老实说,这是我总是推荐某人学习 Python 而不是 PHP 的主要原因之一(除了语言更好)。无论如何,虚拟 +1 用于使用准备好的语句以正确的方式执行 SQL!
0赞
s1h4d0w
4/9/2014
谢谢!我尽量安全,并立即使用正确的保护措施来防止SQL注入。我花了很多时间研究实现安全性的正确方法,并确保没有人可以弄乱我的代码或数据库。我唯一需要开始做的就是注释我的代码:)
评论