用于mysql的PHP搜索引擎

用于mysql的PHP搜索引擎,php,mysql,Php,Mysql,嗯。我有一段代码,应该使用html表单中的文本和布尔字段来搜索mysql数据库。这是一个学习项目,所以不要着急 其思想是检查文本字段的输入,并查看复选框中是否有任何内容。复选框工作正常,但当我为文本框的邮政编码添加代码时,我得到了可怕的结果 “警告:mysql\u real\u escape\u string()[function.mysql real escape string]:第36行的C:\Program Files\Apache Software Foundation\Apache2.

嗯。我有一段代码,应该使用html表单中的文本和布尔字段来搜索mysql数据库。这是一个学习项目,所以不要着急

其思想是检查文本字段的输入,并查看复选框中是否有任何内容。复选框工作正常,但当我为文本框的邮政编码添加代码时,我得到了可怕的结果

“警告:mysql\u real\u escape\u string()[function.mysql real escape string]:第36行的C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\criteriasearch.php中的用户‘ODBC’@‘localhost’(使用密码:否)的访问被拒绝”

我不太明白这一点。下面是复选框的代码。这本身就很好用

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);

 }
它只允许我访问该部分,但第一部分有效。我很确定我的括号或类似的东西有问题,但我一生都无法解决,任何帮助都将不胜感激


提前感谢

尝试将mysql\u connect调用中的链接标识符作为第二个参数传递给mysql\u real\u escape\u字符串。为了正常工作,它需要一个已经建立的MySQL连接。

尝试将MySQL\u connect调用中的链接标识符作为第二个参数传递给MySQL\u real\u escape\u字符串。为了正常工作,它需要一个已经建立的MySQL连接。

我猜不应该有;在这条线上,对吗?“如果(array_key_存在($key$post_map));”谢谢。分号阻止了它。我现在只需要想办法让它搜索。复选框部分工作正常,但名为postcode的文本框工作不正常。我要检查一些东西。我猜不应该有一个;在这条线上,对吗?“如果(array_key_存在($key$post_map));”谢谢。分号阻止了它。我现在只需要想办法让它搜索。复选框部分工作正常,但名为postcode的文本框工作不正常。我要检查一些东西。你能给我一个简单的样品吗。我对这一点还是新手,正在努力解决问题。我假设您引用的是$search[]=$post_map[$key].='行。mysql\u real\u escape\u字符串($value);没问题。您必须先调用mysql\u connect,然后才能使用mysql\u real\u escape\u字符串,成功连接后,mysql\u connect将返回链接标识符。所以示例代码看起来像
$link=mysql\u connect($host,$user,$password)
然后您可以简单地将您的行改写为:
$search[]=$post\u map[$key].='。mysql\u real\u escape\u string($value,$link)
您能给我一个简单的示例吗。我对这一点还是新手,正在努力解决问题。我假设您引用的是$search[]=$post_map[$key].='行。mysql\u real\u escape\u字符串($value);没问题。您必须先调用mysql\u connect,然后才能使用mysql\u real\u escape\u字符串,成功连接后,mysql\u connect将返回链接标识符。所以示例代码看起来像
$link=mysql\u connect($host,$user,$password)
然后您可以简单地将行重写为:
$search[]=$post\u map[$key].='.mysql\u real\u escape\u string($value,$link)