我想将排列结果存储到mysql的临时表中,以便我可以在搜索脚本中使用它。
<?php
function permute($str,$i,$n) {
if ($i == $n) {
echo "$str\n";
echo "<br/>";
$query = mysql_query("CREATE TABLE temp(
id int NOT NULL AUTO_INCREMENT,
number varchar(64) NOT NULL,
PRIMARY KEY(id)
)");
$str = addslashes(trim($_POST['str']));
$query = mysql_query("INSERT INTO temp (number) VALUES ('$str')")
or die(mysql_error());
}
else {
for ($j = $i; $j < $n; $j++) {
swap($str,$i,$j);
permute($str, $i+1, $n);
swap($str,$i,$j); // backtrack.
}
}
}
// function to swap the char at pos $i and $j of $str.
function swap(&$str,$i,$j) {
$temp = $str[$i];
$str[$i] = $str[$j];
$str[$j] = $temp;
}
$str = @$_GET['number'] ;
permute($str,0,strlen($str)); // call the function.
// Get the search variable from URL
?>
有谁知道如何将排列结果插入临时表?
我已尝试插入永久表,但未插入1234的24sets结果,但仅插入了id 1-24。我认为问题是因为$ str包含24组结果但由于它是一起打印而没有分开?
任何解决方案?
答案 0 :(得分:0)
您的真正问题是$str = addslashes(trim($_POST['str']));
,它正在尝试从帖子表单中的Web请求中检索值,然后立即将其放入临时表中。
基本上,你用一些(可能没有设置,因此)空白的东西覆盖你的变量
哦,我希望实际上你可以安全地逃避你的输入参数,或者你的网站将在短时间内被接管。如果number
仅曾应该包含实际数字(1234),而不是某些字符串(ABC),则将其强制转换为数字数据(并返回字符串)以完全清理它(也应该包括异常处理。)