Memcache实现搜索关键字

本文展示了如何使用PHP连接Memcache,并通过GET请求获取搜索关键字。如果关键词已存在,增加计数;否则,初始化为1。当关键词搜索超过三次,内容将从缓存中读取,否则从数据库查询。最后,展示搜索结果表格。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?php
header("content-type:text/html;charset=utf-8");
$pdo = new PDO('mysql:host=127.0.0.1;dbname=g_emall','root','root');
$memcache = new Memcache();
$memcache->connect('127.0.0.1',11211);
$search=$_GET['search'];
if($search)
{
    $where=$search;
}else
{
    $where=1;
}
if($memcache->get("where"))
{
    $arr=$memcache->get("where");
    if(array_key_exists("$where",$arr))
    {
        $arr[$where]=$arr[$where]+1;
        $memcache->replace("where",$arr);
    }else
    {
        $arr[$where]=1;
        $memcache->replace("where",$arr);
    }
}else
{
    $memcache->set("where",array("$where"=>1));
}

/***
 * 搜索三次将内容存入缓存中
 */
$num=$memcache->get($where);
if($num)
{
    $num++;
    $memcache->set($where,$num);
    if($memcache->get($where)>3)
    {
        echo "该词汇搜索大于三次从缓存中读取内容";
        $goods_data=$memcache->get('goods_data');
    }else if($memcache->get($where)==3)
    {
        echo "该词汇搜索等于三次将内容存入缓存中";

        $sql="select * from goods WHERE goods_title like '%$where%'";
       $goods_data=$pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);
        $memcache->set('goods_data',$goods_data);
    }else{
        echo "该词汇搜索不足三次读取数据库";
        $sql="select * from goods WHERE goods_title like '%$where%'";
        $goods_data=$pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);
    }
}else
{
    echo "把搜索条件存入缓存";
    $memcache->set($where,1);
    $sql="select * from goods WHERE goods_title like '%$where%'";
    $goods_data=$pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);
}

?>
<form action="./search.php" method="get">
    <input type="text" name="search"/>
    <input type="submit" value="搜索"/>
</form>
<?php
$data=$memcache->get("where");
    foreach($data as $key=>$val)
    {
        if($val>3)
        {
            echo $key;
        }
    }
?>
<table border="1">
    <th>商品编号</th>
    <th>商品名称</th>
    <th>商品价格</th>
    <th>商品简介</th>
    <th>供货商家</th>
    <?php foreach($goods_data as $key=>$val):?>
        <tr>
            <td><?php echo $val['goods_id'];?></td>
            <td><?php echo $val['goods_title'];?></td>
            <td><?php echo $val['goods_price'];?></td>
            <td><?php echo $val['goods_info'];?></td>
            <td><?php echo $val['goods_shop'];?></td>
        </tr>
    <?php endforeach;?>
</table>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值