2011-07-06 56 views
0

我想將排列結果存儲到mysql中的臨時表中,以便我可以在搜索腳本中使用它。如何在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組結果,但是由於它們一起打印出來而沒有分開?

任何解決方案?

+2

你知道如何將任何東西插入臨時表嗎? – zerkms

+0

您應該至少在嘗試解決方案之前嘗試過。那麼http://dev.mysql.com/doc/refman/5.1/de/insert.html? – Marco

+0

我嘗試插入到一個永久表,但它不工作..插入id,但結果24集沒有插入表中... 我添加 $ str = addslashes(trim($ _ POST ['str 「])); ('$ str')「)或die(mysql_error()); 但只有id被插入,但沒有結果.. – l3x

回答

0

您真正的問題是$str = addslashes(trim($_POST['str']));,它正在嘗試從郵件表單中的Web請求中檢索值,然後將其放入臨時表中。
基本上,你用(可能沒有設置,因此)爲空的東西覆蓋你的變量。
哦,我希望事實上你可以安全地逃脫你的輸入參數,否則你的網站將會在短期內被接管。如果number只有有史以來應該包含一個實際的數字(1234),而不是一些字符串(ABC),將其轉換爲數字數據(並返回到字符串),以完全消毒它(應包括異常處理)。