2011-08-02 92 views
1

好的。我有這樣的代碼,應該使用html表單中的文本和布爾字段來搜索mysql數據庫。這是一個學習項目,所以不要急於求成。針對mysql的PHP搜索引擎

這個想法是它應該檢查輸入的文本字段,然後查看複選框是否有任何內容。該複選框工作正常,但是當我添加文本框郵編的代碼時,我得到了可怕的。在C:\ Program Files \ Apache Software Foundation \中爲用戶ODBC'@ localhost'(使用密碼:NO)拒絕訪問mysql_real_escape_string()[function.mysql-real-escape-string]第36行的Apache2.2 \ htdocs \ criteriasearch.php「

我無法弄清楚這一點。這是複選框的代碼。這在它自己的工作很好。

if(isset($_POST['search']) && !empty($_POST['search'])){ 
foreach($_POST['search'] as $key=>$value){ 
    if($value==1) $search[] = "$key"; 
$searchstring = implode(' AND ', $search); 

} 

當我添加以下代碼:

$post_map = array(
'postcode'=>'candidate_contact_details.postcode' 
    ); 

if(isset($_POST['postcode']) && !empty($_POST['postcode'])) { 

foreach ($_POST['postcode'] as $key) { 
if (array_key_exists($key, $post_map)); 

    $search[] = $post_map[$key] . '=' . mysql_real_escape_string($value); 

} 

這給了我訪問被拒絕就這一節,但首節的作品。我很確定我的括號或類似的東西有問題,但不能在我的生活中解決,任何援助將不勝感激。

在此先感謝

+0

我猜不應該有一個;在這條線上嗎? 「if(array_key_exists($ key,$ post_map));」 – Bing

+0

謝謝。分號正在阻止它。我只需要弄清楚如何讓它現在搜索。複選框部分工作正常,但文本框稱爲郵政編碼不是。我要檢查一些事情。 –

回答

1

嘗試從您的通話的mysql_connect作爲第二個參數來傳遞mysql_real_escape_string鏈路標識符。爲了運行它需要一個已經建立的MySQL連接。

+0

你能否給我一個簡短的例子。我對此仍然陌生,正在努力解決問題。我假設你在引用$ search [] = $ post_map [$ key]這一行。 '='。 mysql_real_escape_string($值); –

+1

沒問題。在能夠使用mysql_real_escape_string之前,必須調用mysql_connect,並且在成功連接時,mysql_connect返回鏈接標識符。因此,示例代碼看起來像 '$ link = mysql_connect($ host,$ user,$ password);' 然後您可以簡單地將您的行重寫爲: '$ search [] = $ post_map [$ key]。' ='。mysql_real_escape_string($ value,$ link)' – Ben

+0

Got you。會放棄它 –