使用PHP查询子字符串的数据库表的字段

时间:2014-02-14 19:08:32

标签: php database html5 mysqli

我正在尝试编写一些PHP代码,它将查询数据库表的最后10行(由三个字段组成)并搜索字符串/子字符串“word”的任何实例并计算它们 - 包括多次在单细胞中。以下是我到目前为止的情况:

    $query = "SELECT * from my_table WHERE column1 LIKE '%word%'
                UNION ALL SELECT * from my_table WHERE column2 LIKE '%word%'";

    $result = mysqli_query($mysqli, $query);

    $i = 0;
    while($row = mysqli_fetch_array($result))
    {
        $i++;
    }
    echo "<i>This table contains [" . $i . "] instances of the string \"word\".</i>";

    mysqli_free_result($result);
    mysqli_close($mysqli);

我遇到的问题是:

  1. 这是轮询我的整个数据库,而不仅仅是最后10行。如果我包含“ORDER BY PID DESC LIMIT 10”,则查询似乎不再适用于WHERE和LIKE。

  2. 它不会在单个单元格中捕获字符串的多个实例。

  3. 我花了好几个小时 - 我很感激任何建议。非常感谢!

    / ** UDPATE ** /

    这是我最终的结果。从本质上讲,我将查询转换为数组,然后转换为字符串。从那里我搜索了所有“单词”的实例。谢谢大家的帮助。

        $query = "SELECT * FROM my_table ORDER BY PID DESC LIMIT 10";
        $result = mysqli_query($mysqli, $query);
    
        $j = 0;
        $i = 'word';
    
        while ($row = mysqli_fetch_array($result))
        {
        $intoarray = implode(",", $row);
        $j += substr_count($intoarray, $i); 
        }
    
        echo "<i>This table contains [" . ($j / 2) . "] instances of the string \"word\".</i>";
    

2 个答案:

答案 0 :(得分:0)

尝试对表和列的所有名称使用反引号符号。您可以在美国键盘上找到`,位于<TAB>键的正上方。例如:

原始回答:

"SELECT * from `my_table` WHERE `column1` LIKE '%word%'"

根据对此的评论进行编辑:

$query = "SELECT * from `my_table` WHERE `column1` LIKE '%word%'
            UNION ALL SELECT * from `my_table` WHERE `column2` LIKE '%word%'";

此查询在我的服务器上运行正常。

答案 1 :(得分:0)

我为我的表创建了以下查询,它工作正常

(select * from eas_appliciant
where appliciant_id = '6'
order by appliciant_id limit 0,1)
union all
(select * from eas_appliciant
where appliciant_id = '7'
order by appliciant_id limit 0,1)

你也可以按照

创建
(   SELECT column1 as selected_column from my_table 
    WHERE column1 LIKE '%word%' 
    ORDER BY PID DESC LIMIT 0,10 )
UNION ALL
(   SELECT colum2 as selected_column from my_table 
    WHERE column2 LIKE '%word%' 
    ORDER BY PID DESC LIMIT 0,10)

我不知道为什么它不适合你