php
  • mysql
  • sql
  • function
  • 2011-06-03 40 views 0 likes 
    0

    這是我當前的代碼:如何創建搜索功能? (換上什麼人搜索的東西)

    $result = mysql_query("SELECT * FROM characters WHERE namn = 'Jargon'"); 
    
    while($row = mysql_fetch_array($result)) 
        { 
        echo "<div class='content_left'>"; 
        echo "<div class='blue_text_header'>Information</div>"; 
        echo "<h1>"; 
        echo $row['Namn']; 
        echo "</h1>"; 
    
        echo "<br /><br /><br /><br /><br /><br /><br />"; 
        echo "<div class='red_text_header'>Obekräftade fall</div>"; 
        echo str_replace(',','<br />', $row['unconfirmed']); 
    
        echo "</div>"; 
        echo "<div class='content_right'>"; 
    
        echo "<div class='orange_text_header'>Andra namn</div>"; 
        echo str_replace(',','<br />', $row['Alias']); 
    
        echo "<br />"; 
        echo "<br /><br /><br /><br />"; 
    
        echo "<div class='green_text_header'>Bekräftade fall</div>"; 
        echo str_replace(',','<br />', $row['confirmed']); 
        } 
    
    mysql_close($con); 
    

    ,正如你看到的,它是「​​」該選擇什麼樣的信息輸出,我希望用戶做決定又該被輸出,所以我想要一個簡單的搜索表單,如果人們寫得像「你好」,我希望用「你好」來切換「Jargon」,如果你得到它?

    如果可以,你可以讓我的搜索表單和post.php文件?

    回答

    0

    更改您的第一行這些:

    if (!isset($_GET['name']) { // Handle a missing name variable in some way 
        // (if you like you can even include the form on this page itself, allowing 
        // the page to submit data back to itself, with this isset() check 
        // determining whether to show the form or process the form) 
        print "You must enter a name"; 
        exit; 
    } 
    $result = mysql_query("SELECT * FROM characters WHERE namn = '".mysql_real_escape_string($name)."'"); 
    

    ...並添加這樣的形式:

    <form action="post.php" method="get"> 
    <label for="name">Name</label><input name="name" id="name"/> 
    <input type="submit"/> 
    </form> 
    
    0

    您想要動態構建查詢字符串,例如使用mysql_query(sprintf("SELECT * FROM characters WHERE namn = '%s'",mysql_real_escape_string($myInputVar)));來構建您的查詢。只要確保您正確地使用mysql_escape_string來逃避用戶提供的輸入,那麼您就不會打開自己的SQL注入攻擊!

    +0

    -1,您將SQL注入漏洞全部打開。 – Johan 2011-06-03 19:04:55

    +1

    +1對於注射和sprintf的解釋,儘管這裏並不是嚴格需要,但可以使事情更好地結構化 - 但對於新來的人來說可能太多了。 – 2011-06-03 19:06:41

    +1

    是的,你需要mysql_real_escape_string – 2011-06-03 19:07:25

    1
    $input_clean = mysql_real_escape_string($input); 
    $result = mysql_query("SELECT * FROM characters WHERE namn LIKE '%$input_clean%'"); 
    

    如果$輸入= 「你好」,你會得到類似的結果「你好」,「你好世界」,「我說你好」等等,但你不會得到像「嗨鮑勃」的東西。結合brettz9關於HTML表單的答案,你得到了一個搜索程序。

    +0

    儘管我沒有看到他的例子暗示那種搜索,但是+1預測了「搜索」的可能含義, – 2011-06-03 19:04:37

    相關問題