编辑:讨论here click here后,我决定使用弗朗西斯阿维拉的解决方案,它更安全,而且我没有找到一个方法来利用我的路,只有大家都说它的安全风险使用eval( )。如果您找到了方法,请利用我的方式,请发表评论。 :-),以便我了解它以及另一个使用eval的用户:-)创建动态数量的变量
还有一件事情不使用eval(),它比我想要的更慢。
编辑:
一个积极的事情,也就是在弗朗西斯阿维拉的解决办法是,你只需要特定的只有2瓦尔,$ SQL + $ INPUT,无需更多的弟弟$输出。
编辑:删除旧的问题,并用它替换它,所以你可能有一个更好的想法,我想要做什么。
我发现一个解决方案如何制作一个动态数量的变量,但它不是最优解决方案。因为我需要编辑/添加更多的线,如果变量的数量变得比8更高的那么有没有一种方法,使在开关功能上不要继电器,其动态
public function readDB($readdb, $input, $output1) {
$sql = $readdb;
$stmt = $this->mysqli->prepare($sql);
if(!empty($input) && is_array($input)) {
$inputn = count($input);
switch($inputn) {
case "1":
$stmt->bind_param('s', $input[0][0]);
break;
case "2":
$stmt->bind_param('ss', $input[0][0], $input[1][0]);
break;
case "3":
$stmt->bind_param('sss', $input[0][0], $input[1][0], $input[3][0]);
break;
case "4":
$stmt->bind_param('ssss', $input[0][0], $input[1][0], $input[3][0], $input[4][0]);
break;
case "5":
$stmt->bind_param('sssss', $input[0][0], $input[1][0], $input[3][0], $input[4][0], $input[5][0]);
break;
case "6":
$stmt->bind_param('ssssss', $input[0][0], $input[1][0], $input[3][0], $input[4][0], $input[5][0], $input[6][0]);
break;
case "7":
$stmt->bind_param('sssssss', $input[0][0], $input[1][0], $input[3][0], $input[4][0], $input[5][0], $input[6][0], $input[7][0]);
break;
case "8":
$stmt->bind_param('ssssssss', $input[0][0], $input[1][0], $input[3][0], $input[4][0], $input[5][0], $input[6][0], $input[7][0], $input[8][0]);
break;
default:
break;
}
}
if (!$stmt) {throw new Exception($mysqli->error);}
$stmt->execute();
$stmt->store_result();
$checker = $stmt->num_rows;
if($checker !== 0) {
if(!empty($output1)) {
switch($output1) {
case "1":
$stmt->bind_result($output[0]);
while ($stmt->fetch()) {
$results[] = array($output[0]);
}
break;
case "2":
$stmt->bind_result($output[0], $output[1]);
while ($stmt->fetch()) {
$results[] = array($output[0], $output[1]);
}
break;
case "3":
$stmt->bind_result($output[0], $output[1], $output[2]);
while ($stmt->fetch()) {
$results[] = array($output[0], $output[1], $output[2]);
}
break;
case "4":
$stmt->bind_result($output[0], $output[1], $output[2], $output[3]);
while ($stmt->fetch()) {
$results[] = array($output[0], $output[1], $output[2], $output[3]);
}
break;
case "5":
$stmt->bind_result($output[0], $output[1], $output[2], $output[3], $output[4]);
while ($stmt->fetch()) {
$results[] = array($output[0], $output[1], $output[2], $output[3], $output[4]);
}
break;
case "6":
$stmt->bind_result($output[0], $output[1], $output[2], $output[3], $output[4], $output[5]);
while ($stmt->fetch()) {
$results[] = array($output[0], $output[1], $output[2], $output[3], $output[4], $output[5]);
}
break;
case "7":
$stmt->bind_result($output[0], $output[1], $output[2], $output[3], $output[4], $output[5], $output[6]);
while ($stmt->fetch()) {
$results[] = array($output[0], $output[1], $output[2], $output[3], $output[4], $output[5], $output[6]);
}
break;
case "8":
$stmt->bind_result($output[0], $output[1], $output[2], $output[3], $output[4], $output[5], $output[6], $output[7]);
while ($stmt->fetch()) {
$results[] = array($output[0], $output[1], $output[2], $output[3], $output[4], $output[5], $output[6], $output[7]);
}
break;
default:
echo "HERE";
break;
}
}
} else {
$results = "NO RESULTS";
}
$stmt->fetch();
$stmt->close();
$this->checker = $checker;
$this->results = $results;
$this->result = array('num_rows' => $checker, $results);
return $this->results;
我不明白你的问题,真的。但你可以用另一个变量值来创建变量,如下所示:{$ var} = true – Zar 2011-12-24 19:42:54
嗨,我更新了文本,如果你有时间可以看看它,也许你现在更好地理解它 – user1015314 2011-12-24 21:48:50