如何在mysql中将置换结果插入表中

时间:2011-07-06 06:51:58

标签: php mysql sql

我想将排列结果存储到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组结果但由于它是一起打印而没有分开?

任何解决方案?

1 个答案:

答案 0 :(得分:0)

您的真正问题是$str = addslashes(trim($_POST['str']));,它正在尝试从帖子表单中的Web请求中检索值,然后立即将其放入临时表中。
基本上,你用一些(可能没有设置,因此)空白的东西覆盖你的变量 哦,我希望实际上你可以安全地逃避你的输入参数,或者你的网站将在短时间内被接管。如果number应该包含实际数字(1234),而不是某些字符串(ABC),则将其强制转换为数字数据(并返回字符串)以完全清理它(也应该包括异常处理。)