0

我刚刚发现我不能立即在 codeigniter 中使用 PHPSESSIONS,所以我已经下载了 Codeigniter 的 Native_Sessions 库。

我有一个搜索查询,用于使用在线邮政编码数据库 api 在数据库中搜索邮政编码。我将来自 api 的邮政编码存储在一个会话中,并想在我的工厂表中搜索这些邮政编码,其中每个工厂都有一行邮政编码。

所以我的工厂表是这样的:

Factories
---------
Factoryid
Factoryname
Adress
Postcode
Country
...
...
...

我的邮政编码搜索查询如下所示:

    if (!isset($_COOKIE['cookie'])) {

        $query = "SELECT * FROM (`bedrijfcategorieen`) 
        JOIN `bedrijven` ON `bedrijfcategorieen`.`idbedrijven` = `bedrijven`.`idbedrijven` 
        JOIN `categorieen` ON `bedrijfcategorieen`.`idcategorieen` = `categorieen`.`idcategorieen` 
        WHERE (`Bedrijfsnaam` LIKE '%".$this->input->post('search')."%' 
        OR `Plaats` LIKE '%".$this->input->post('search')."%' 
        OR `Telefoonnummer` LIKE '%".$this->input->post('search')."%' 
        OR `Email` LIKE '%".$this->input->post('search')."%' 
        OR `Website` LIKE '%".$this->input->post('search')."%' 
        OR `Profiel` LIKE '%".$this->input->post('search')."%' 
        OR `Adres` LIKE '%".$this->input->post('search')."%' 
        OR `Categorie` LIKE '%".$this->input->post('search')."%') 

而这一行用于搜索邮政编码:

        AND (Postcode LIKE '%". $_SESSION['postcodes'] ."%')

这不起作用,所以我认为我做错了。注意我的会话称为邮政编码,如上所示。

        GROUP BY `Categorie`, `bedrijfcategorieen`.`idbedrijven`";
        $query = $this->db->query($query);

        $result = $query->result_array();

        return $result;

用于设置会话的代码。形式:

表单的javascript:(使用:http ://www.d-centralize.nl/pro6pp/

    function send_data_to_server(output)
    {
        var post_code=$('.postcode').val();
        var url = 'http://kees.een-site-bouwen.nl/script.php?output='+output+'&post_code='+post_code;

        $.ajax({
            url : url,
            success : function (data)
            {
            }
        });
    };

数据发送到的 script.php:

<?php 

echo '<pre>';
     session_start();

     $new_post_code=$_GET['post_code'];
        if($new_post_code!='' && $new_post_code!=0){
        if(!isset($_SESSION['searched_post_code']) || 
        empty($_SESSION['searched_post_code'])){ 
        $_SESSION['searched_post_code']=$new_post_code; 

        }elseif($_SESSION['searched_post_code']!=$new_post_code){ 

        $_SESSION['searched_post_code']=$new_post_code; 

        unset($_SESSION['postcodes']); 
        }
        }
     $output=$_GET['output'];
     $_SESSION['postcodes'][]=$output;
     echo $output;
     print_r($_SESSION);
echo '</pre>';

?>
4

1 回答 1

0

您的代码中有太多错误。但我只会解决你面临的问题是......

我发现了问题所在,但我不知道如何解决。问题是搜索 'Postcode' LIKE '%' .Array => [0] => 9101 [1] 9102... 等这样它不起作用。我发现您可以在普通 php 中使用 in_array()。但是我如何在sql中使用一些东西。

正如你在上面的评论中所说。

我假设$_SESSION['postcode']是一个包含两个元素 9101 和 9102 的数组。

脚本.php

$string = implode($_SESSION['postcode'], '|');

在你的 sql 查询文件中

AND (Postcode LIKE '%". $_SESSION['postcodes'] ."%')

改成,

AND (Postcode REGEXP '$string')

它会给你想要的结果。

于 2013-05-14T13:03:59.467 回答