2011-08-02 21 views
1

Ok。私は、mysqlデータベースを検索するためにHTMLフォームでテキストとブールフィールドを使用するはずのこのコードを少し持っています。これは学習プロジェクトであり、急いではありません。mysqlのPHP検索エンジン

考えられるのは、入力と表示のテキストフィールドをチェックして、チェックボックスに何かがあるかどうかを確認することです。チェックボックスは正常に機能しますが、テキストボックスのポストコードのコードを追加すると恐ろしい結果になります。 "function.mysql-real-escape-string":C:\ Program Files \ Apache Software Foundation \のユーザ 'ODBC' @ 'localhost'(パスワードはNOを使用)のアクセスが拒否されました。 Apache2.2 \ htdocs \ criteriasearch.php on line 36 "

私はこれを理解できません。チェックボックスのコードは次のとおりです。これはそれ自身の上でうまく動作します。

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_real_escape_stringの2番目のパラメータとしてあなたにmysql_connect呼び出しからリンク識別子を渡して試してみてください。機能するためには、すでに確立されているMySQL接続が必要です。

+0

私は簡単なサンプルを教えてください。私はまだこれに新しいですし、物事の周りに自分の道を働いています。 $ search [] = $ post_map [$ key]という行を参照していると仮定します。 '='。 mysql_real_escape_string($ value); –

+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

あなたはどうでしょうか?それに行くだろう –