我有一个这样的字符串:$shortName = 'DATE,FB,DS,AK,GB,AJ,GL';
现在我想动态创建$DATE $FB $DS $AK $GB $AJ $GL
之类的变量,以便将这些变量传递给bind_result()
函数。
这是我的代码
$gameQuery = "SELECT `SHORT` FROM `game` WHERE `STATUS` = 1"
$gameStmt = $this->game->prepare($gameQuery);
$gameStmt -> execute();
$gameStmt -> bind_result($short);
$shortName = 'DATE';
while ($gameStmt->fetch()) {
$shortName = $shortName.','.$short;
}
echo $shortName; #output : DATE,FB,DS,AK,GB,AJ,GL
$chartQuery = "SELECT $shortName FROM `chart` WHERE MONTH(`date`) = ?";
$chartStmt = $this->chart->prepare($chartQuery);
$chartStmt -> bind_param("s",$month);
$chartStmt -> execute();
$chartStmt -> bind_result();
有人为此提供解决方案或替代方案吗?
答案 0 :(得分:3)
您可以extract()
使用explode()
和array_combine()
来执行此操作:
$vars = explode(',', $shortName);
$array = array_combine($vars, $vars);
extract($vars);
explode()
使用逗号作为分隔符将该字符串转换为数组。 array_combine()
使用键创建关联数组(下一步需要)。然后extract()
将每个数组元素转换为变量。
这让人感到费解,但这就是你要求的。