gpt4 book ai didi

PHP + MYSQL - 基于循环表数据

转载 作者:行者123 更新时间:2023-11-29 12:52:39 25 4
gpt4 key购买 nike

我目前有一个 MySQL 数据库,其中包含一个包含特定单词集数据的表。结构是这样的(当然有更多的数据):

**ID**        **word**        **number**
----------------------------------------
1 Test 10
2 Test 14
3 Test 20
4 Apple 7
5 Apple 8
6 Apple 11
7 Bus 3
8 Bus 3
9 Bus 5

其中 ID 是唯一键。

我想做的是从该表中获取所有数据并循环遍历它以获取每个“单词”集的“数字”数据,以便运行一些总和。

所以,我想获取所有数据,然后循环遍历它并为每个单词集执行一些 if 语句,例如:获取与单词 Test 相关的所有数字,然后获取与单词 Apple 等相关的所有数字等.但是,由于该单词不是唯一键,因此我不确定从数据库中提取数据后如何拆分数据。

到目前为止,我已经得到以下内容:

public function getData() {

$query = $this->db->prepare("SELECT * FROM table");
$query->execute();

try{

$query->execute();
$result = $query->fetchAll();

}catch(PDOException $e){
die($e->getMessage());
}

}

很明显,我已经根据需要从数据库中提取了所有数据,并且可以毫无问题地 print_r 它返回的数据数组。现在我想循环遍历数据并为每个单词集完成特定的函数。例如:运行 if 语句检查“Test”一词的 3 个数字是否相同,然后运行相同的检查以查看“Apple”的 3 个数字是否相同,然后再次检查“Bus”等的 3 个数字.

举个例子,在循环/检查结束时,我希望能够回显这样的语句:“单词 Bus 包含 2 个匹配的数字”

最佳答案

以下是在 SQL 查询中执行此操作的方法:

SELECT word, COUNT(DISTINCT number) = 1 AS numbers_all_the_same
FROM table
GROUP BY word

根据您的数据,这将返回:

word    numbers_all_the_same
Test 0
Apple 0
Bus 0

因为他们的组中没有一个人的数字完全相同。如果任何单词的编号完全相同,则它们在第二列中将包含 1

以下是创建所有数据的数组(按单词分组)的方法:

$all_words = array();
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
$word = $row['word'];
$number = $row['number'];
if (!isset($all_words[$word])) { // We haven't seen this word before
$all_words[$word] = array($number); // Create an array with the number
} else { // We have seen this word before
$all_words[$word][] = $number; // Add the number to the array
}
}

现在您可以对与每个单词相关的数字执行任何类型的分析。如果您想知道所有数字是否相同,您可以这样做:

$uniq = array_unique($all_words["Apple"]);
if (count($uniq) == 1) ...

关于PHP + MYSQL - 基于循环表数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24500754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com