首页 > 解决方案 > 简单的回显功能不吐数字

问题描述

下面是我尝试计算 $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;

?>

标签: php

解决方案


您可以在单个查询中完成所有操作,而无需遍历结果。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>";
}

推荐阅读