我正在尝试编写一些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);
我遇到的问题是:
这是轮询我的整个数据库,而不仅仅是最后10行。如果我包含“ORDER BY PID DESC LIMIT 10”,则查询似乎不再适用于WHERE和LIKE。
它不会在单个单元格中捕获字符串的多个实例。
我花了好几个小时 - 我很感激任何建议。非常感谢!
/ ** 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>";
答案 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)
我不知道为什么它不适合你