Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php搜索mysql字符串结果_Php_Mysql - Fatal编程技术网

php搜索mysql字符串结果

php搜索mysql字符串结果,php,mysql,Php,Mysql,伙计们,我只想问一个简单的问题。我在mysql行中有一个类似于此的字符串 “google.co.nz、stackoverflow.com、facebook.com、grubber.co.nz” 等等。。。我想搜索表中的所有行,并检查“facebook.com”在所有与上面类似的行中出现了多少次,以便澄清 我的排像这样 -- id -- user -- likes 1 bob facebook.com, google.co.nz, grubber.co.nz, stack

伙计们,我只想问一个简单的问题。我在mysql行中有一个类似于此的字符串

“google.co.nz、stackoverflow.com、facebook.com、grubber.co.nz”


等等。。。我想搜索表中的所有行,并检查“facebook.com”在所有与上面类似的行中出现了多少次,以便澄清

我的排像这样

-- id -- user -- likes 
   1      bob     facebook.com, google.co.nz, grubber.co.nz, stackoverflow.com

我想检查一下facebook.com在整个表格中(每一行)出现了多少次假定每个用户只能喜欢同一个页面一次,这应该是可行的:

SELECT COUNT(*)
FROM table
WHERE likes REGEXP '[[:<:]]facebook.com[[:>:]]'
选择计数(*)
从桌子上
哪里喜欢REGEXP“[[::]”

PS:规范化您的表格,您将在不久的将来遇到这样的布局的严重问题

假设每个用户只能喜欢同一个页面一次,这应该可以:

SELECT COUNT(*)
FROM table
WHERE likes REGEXP '[[:<:]]facebook.com[[:>:]]'
选择计数(*)
从桌子上
哪里喜欢REGEXP“[[::]”

PS:规范化您的表格,您将在不久的将来遇到这样的布局的严重问题

您可以使用
like
操作符来匹配模式:

SELECT COUNT(id) AS occurences  WHERE likes LIKE "%facebook.com%"

您可以使用
like
操作符来匹配模式:

SELECT COUNT(id) AS occurences  WHERE likes LIKE "%facebook.com%"
你可以用“喜欢”这个词。 事情是这样的(如果你想知道哪个用户喜欢facebook.com)

无论如何,请考虑在1:n表结构中存储这些类,而不是字符串

这样,您就有了一个存储所有相似站点的表,一个存储分配的用户表和一个用户相似表。

您可以使用“like”语句。 事情是这样的(如果你想知道哪个用户喜欢facebook.com)

无论如何,请考虑在1:n表结构中存储这些类,而不是字符串

这样,您就有了一个存储所有相似站点的表,一个用户表和一个存储分配的用户相似表。

试试这个

select count(likes) from yourTable where likes like '%facebook.com%'
试试这个

select count(likes) from yourTable where likes like '%facebook.com%'

其他选择。获取变量中的行数据,然后使用函数preg\u match\u all()


此函数返回在第一个参数中传递的正则表达式的出现次数。

其他选项。获取变量中的行数据,然后使用函数preg\u match\u all()


此函数返回在第一个参数中传递的正则表达式的出现次数。

您可以通过延迟方式执行此操作,发出类似SQL的查询:

SELECT count(*) FROM my_table 
WHERE my_table.likes LIKE '%facebook.com%'
这真的(真的)不利于cpu。尤其是大桌子

否则,您可以使用MySQL全文索引功能


您可以在

中找到更多详细信息。您可以用一种懒散的方式,发出一个类似SQL的查询:

SELECT count(*) FROM my_table 
WHERE my_table.likes LIKE '%facebook.com%'
这真的(真的)不利于cpu。尤其是大桌子

否则,您可以使用MySQL全文索引功能


您可以在

中找到更多详细信息。最好先规范化数据库。是否为逗号分隔值?我的意思是你有这样的专栏,
ID
User
Likes
(这是csv)?@knittl yer我知道,它的结构很糟糕,只是为了进行一点测试问题是,许多作为简单原型编写的程序最终都会投入生产。即使在“只是测试一个想法”的时候,也不要编写糟糕的代码,因为在你意识到之前,你糟糕的DB设计将成为主数据库,你将无法修复它。你最好先规范化你的数据库。它是逗号分隔的值吗?我的意思是你有这样的专栏,
ID
User
Likes
(这是csv)?@knittl yer我知道,它的结构很糟糕,只是为了进行一点测试问题是,许多作为简单原型编写的程序最终都会投入生产。即使在你“只是测试一个想法”的时候,也不要写糟糕的代码,因为在你意识到之前,你糟糕的数据库设计将成为主数据库,你将无法修复它。这不符合Facebook.com吗?只要正常化就行了!csv字段几乎总是一个坏主意,但这不是问题所在。没错。。。这就是为什么我投了更高的票。(只是强调唱你的PS:p)这不符合Facebook.com吗?只是正常化!csv字段几乎总是一个坏主意,但这不是问题所在。没错。。。这就是为什么我投了更高的票。(只需强调唱你的PS:p)