php - 简单的回显功能不吐数字
问题描述
下面是我尝试计算 $name 字符串在表的 $related_company 字符串行中出现的次数的非常简单的尝试。
我希望它会吐出一个数字,但是当我将它上传到我的网络服务器时,它不会吐出任何东西。
有任何想法吗?
<?php
$db = new SQLite3('database.sqlite3');
$red = $db->query('SELECT * FROM news');
$name = strtolower("Tesla");
$related_company = $red->fetchArray($row['related_company']);
while ($row = $red->fetchArray()) {
if (in_array($name, $related_company)){
$count+1;
}}
echo $count;
?>
解决方案
您可以在单个查询中完成所有操作,而无需遍历结果。SQL 有一个LIKE
运算符来在列中执行模式匹配。
$db = new SQLite3('database.sqlite3');
$stmt = $db->prepare("SELECT COUNT(*) AS count FROM news WHERE related_company LIKE :name");
$name = '%' . strtolower("Tesla") . '%';
$stmt->bindParam(':name', $name);
$stmt->execute();
$row = $stmt->fetchArray(SQLITE3_ASSOC);
$count = $row['count'];
echo $count;
如果名称来自另一个表,您可以加入这些表。
$result = $db->query("
SELECT c.name, COUNT(*) as count
FROM Companies AS c
JOIN news AS n ON n.related_company LIKE '%' || LOWER(c.name) || '%'");
while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
echo "{$row['name']}: {$row['count']}<br>";
}
推荐阅读
- xml - 使用 XML 数据源获取带有 jasper 报告的空白子报告
- c - 使用 fscanf 读取制表符分隔的记录
- matplotlib - 如何在 matplotlib 中以正确的 mm 比例导出 svg
- angular - 单击小型设备的路由器链接时关闭侧导航
- javascript - 我的问题是关于 Can't bind to 'ngFor' 因为它不是 'li' 的已知属性,为什么会出现此错误?
- c# - 将 .NET Core 桌面应用程序连接到 Azure SQL Server 的最佳方式是什么
- spring-security-oauth2 - 如何使用 Spring Security 5 OAuth SSO 客户端保留登录到我的应用程序的用户
- julia - 我想用 Julia 中的一维数组制作一个矩阵
- python - 从合并结果中分配 pandas 值
- r - 如何改变包含数据框中每个特征的因子的列?