2012-06-21 128 views
2

這是我得到的。我試圖讓jquery運行一個MySQL查詢。jQuery執行PHP MySQL查詢

這是我的PHP:

<select name="kingdom" id="kingdom" > 
    <option value="standard">-- Kingdom --</option> 
     <?php 
      $the_d = $_POST['d']; 
      $filter = mysql_query("SELECT DISTINCT sci_kingdom FROM tbl_lifedata WHERE sci_domain = '$the_d'"); 
       while($row = mysql_fetch_array($filter, MYSQL_NUM)) 
        { 
         $row['name']; 
         //echo "<option value='$row[0]'>$row[0]</option>"; 
        } 
     ?> 
</select> 

而且我的jQuery:

$('#domain').change(function() { 

    var selectval = $('#domain').val(); 

    $.post("search.php", { 
     d: selectval 
    }, function (data) { 
     $('.result').html(data); 
    }); 
}); 

現在我只想擁有jQuery的吐出的MySQL結果的值。當我有這個工作時,我可以讓他們填充選擇框。我現在得到的是search.php的html,但與mysql查詢無關。

+2

請注意,您的代碼第5行 – thomasrutter

+2

一個SQL注入漏洞,你是不是從查詢輸出值。您只需在提取循環中具有'$ row ['name']'。你在抓取中使用數字鍵,所以'$ row ['name']'不會被設置。 –

+0

是否可以打印$ _POST ['d']? –

回答

2

你應該實際打印您從數據庫中檢索的內容。

<select name="kingdom" id="kingdom" > 
       <option value="standard">-- Kingdom --</option> 
       <?php 
       $the_d = mysql_real_escape_string($_POST['d']);//thanks to @Mansfield 
       $filter = mysql_query("SELECT DISTINCT sci_kingdom FROM tbl_lifedata WHERE sci_domain = '".$the_d."'"); 
       while($row = mysql_fetch_array($filter, MYSQL_NUM)) 
       { 
        echo "<option value='$row[0]'>$row[0]</option>"; 

       } 

       ?> 
      </select> 


//or you can also use mysql_fetch_array($filter, MYSQL_ASSOC) if you want to print $row['name'] 

更新答案:

<script src="jquery.min.js"></script> 
<input type='text' class="domain" id="domain"/> 
<div class="result" id="result"></div> 
<script> 
$('#domain').change(function() { 

      var selectval = $('#domain').val(); 

      $.post(
       "test.php", 
       { d : selectval }, 
       function(data) { 
        $('.result').html(data);//my bad should be displaying data retrenched 
       } 
       ); 
}); 
</script> 

///test.php contents: 

<?php 
print $the_d = mysql_real_escape_string($_POST['d']);// see if the scripts are working fine until here, if so, then see below. 
//test your mysql result by doing a print_r($row.)  
?> 

發佈的print_r($行)的結果;

+0

謝謝你提醒我關於真正的逃脫字符串!我需要做什麼來讓我的jQuery來填充它?現在,在這些變化之後,它仍然不起作用。 – chrsgrffth

+0

你可以做alert(selectval); ??? –

+0

是的!它提出了選擇onchange的價值。我能從這裏做什麼? – chrsgrffth