Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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 我选择女人而不是男人_Php_Mysql - Fatal编程技术网

Php 我选择女人而不是男人

Php 我选择女人而不是男人,php,mysql,Php,Mysql,我的数据库中有一个名为categories的字段,其中包含服装店主题的类别(新货、畅销货、男性、女性、儿童等) 我有一张记录:新来的,伙计们 我还有第二张唱片:新来的,女人 我如何查询数据库来选择女性还是男性 我已经厌倦了这一点:SELECT*来自类别类似[[::]]的产品。 这确实适用于男性,但不适用于女性。如果你实际上存储了“男性”或“女性”这两个词,那么你的数据库设置不正确 您应该使用一个链接表,比如说类别,将产品链接到类别 然后,您可以执行以下操作: SELECT * FROM prod

我的数据库中有一个名为categories的字段,其中包含服装店主题的类别(新货、畅销货、男性、女性、儿童等)

我有一张记录:新来的,伙计们 我还有第二张唱片:新来的,女人

我如何查询数据库来选择女性还是男性

我已经厌倦了这一点:
SELECT*来自类别类似[[::]]的产品。


这确实适用于男性,但不适用于女性。

如果你实际上存储了“男性”或“女性”这两个词,那么你的数据库设置不正确

您应该使用一个链接表,比如说
类别
,将产品链接到类别

然后,您可以执行以下操作:

SELECT * FROM products p
JOIN categoriesToProducts ctp ON ctp.productId = p.productId
JOIN categories c ON c.categoryId = ctp.categoryId
WHERE c.categoryName = "Men"; 
SELECT * FROM products WHERE categories where find_in_set('men',categories)'

如果你实际上存储了“男性”或“女性”这两个词,那么你的数据库设置不正确

您应该使用一个链接表,比如说
类别
,将产品链接到类别

然后,您可以执行以下操作:

SELECT * FROM products p
JOIN categoriesToProducts ctp ON ctp.productId = p.productId
JOIN categories c ON c.categoryId = ctp.categoryId
WHERE c.categoryName = "Men"; 
SELECT * FROM products WHERE categories where find_in_set('men',categories)'
只要用这个:

SELECT * FROM products WHERE categories LIKE 'Men%';
SELECT * FROM products WHERE categories LIKE 'Women%';
只使用正确的%

只需使用以下选项:

SELECT * FROM products WHERE categories LIKE 'Men%';
SELECT * FROM products WHERE categories LIKE 'Women%';

只使用正确的%

您可能只想简化您的方法

SELECT * FROM products WHERE categories = 'Men';
SELECT * FROM products WHERE categories = 'Women';
既然“男人”是“女人”的一部分,这可能就是您的sql出现问题的原因

但是,由于它引起了我的注意,您的数据库可能包含更长的字符串,您也可以这样做

SELECT * FROM products WHERE categories = 'New Arrival, Men';
SELECT * FROM products WHERE categories = 'New Arrival, Women';

您可能只想简化您的方法

SELECT * FROM products WHERE categories = 'Men';
SELECT * FROM products WHERE categories = 'Women';
既然“男人”是“女人”的一部分,这可能就是您的sql出现问题的原因

但是,由于它引起了我的注意,您的数据库可能包含更长的字符串,您也可以这样做

SELECT * FROM products WHERE categories = 'New Arrival, Men';
SELECT * FROM products WHERE categories = 'New Arrival, Women';

您可以使用
find_in_set函数
,看看这个例子

mysql> select * from fruits;
+-------------------------------+
| fruit                         |
+-------------------------------+
| banana, apple, orange, grapes |
+-------------------------------+
1 row in set (0.00 sec)

mysql> select * from fruits where find_in_set('banana',fruit);
+-------------------------------+
| fruit                         |
+-------------------------------+
| banana, apple, orange, grapes |
+-------------------------------+
1 row in set (0.00 sec)
因此,请尝试以下方法:

SELECT * FROM products p
JOIN categoriesToProducts ctp ON ctp.productId = p.productId
JOIN categories c ON c.categoryId = ctp.categoryId
WHERE c.categoryName = "Men"; 
SELECT * FROM products WHERE categories where find_in_set('men',categories)'

请确保
后面的单词完全相同,没有多余的空格您可以使用
查找集合中的函数
,查看此示例

mysql> select * from fruits;
+-------------------------------+
| fruit                         |
+-------------------------------+
| banana, apple, orange, grapes |
+-------------------------------+
1 row in set (0.00 sec)

mysql> select * from fruits where find_in_set('banana',fruit);
+-------------------------------+
| fruit                         |
+-------------------------------+
| banana, apple, orange, grapes |
+-------------------------------+
1 row in set (0.00 sec)
因此,请尝试以下方法:

SELECT * FROM products p
JOIN categoriesToProducts ctp ON ctp.productId = p.productId
JOIN categories c ON c.categoryId = ctp.categoryId
WHERE c.categoryName = "Men"; 
SELECT * FROM products WHERE categories where find_in_set('men',categories)'

请确保
后面的单词完全相同,没有多余的空格

因为您在选择“女性”时不会遇到问题,您可以使用如下查询来解决男性的问题:

SELECT * FROM products WHERE categories LIKE '% Men';

只需在字母“M”前留出一个空格即可。

由于您在选择“女性”时没有问题,因此您可以使用如下查询来解决男性的问题:

SELECT * FROM products WHERE categories LIKE '% Men';


在字母“M”前加一个空格。

类别=男性或类别=女性的情况如何?这就是为什么我们有。应该有一个单独的表:
类别
。通过
ProductCategories
连接表中的
外键
绑定到
产品
表。基本上,你做错了。你们所做的都在第一章的书中,第一章:乱穿马路。@SpikeX我读了这个问题……不要粗鲁。架构设计得很差,差别很大。@Neal,该死。。我本想说,我跑得更快,但时间戳是一样的。@tereško holy monkeys。哇!我从未见过两个时间戳如此相同!类别=男性或类别=女性的情况如何?这就是为什么我们有。应该有一个单独的表:
类别
。通过
ProductCategories
连接表中的
外键
绑定到
产品
表。基本上,你做错了。你们所做的都在第一章的书中,第一章:乱穿马路。@SpikeX我读了这个问题……不要粗鲁。架构设计得很差,差别很大。@Neal,该死。。我本想说,我跑得更快,但时间戳是一样的。@tereško holy monkeys。哇!我从未见过两个时间戳如此相同!如何…或创建一个类别表,将prodcuts与类别连接并使用类似于“WHERE category_id=x”的内容,或创建一个类别表,将prodcuts与类别连接并使用类似于“WHERE category_id=x”的内容OP似乎在数据库中包含了整个字符串
新来的女性
新来的男性
。。。。所以这是行不通的…他说他想选择女性或男性。。。这就是我从他的问题中理解的。在我们真正看到他的数据库结构之前,我们只是猜测。OP似乎在数据库中有整个字符串
新来者、女性
新来者、男性
。。。。所以这是行不通的…他说他想选择女性或男性。。。这就是我从他的问题中理解的。在我们真正看到他的数据库结构之前,我们只是猜测。@neal我同意你的看法,这就是我认为他想要的,因为我们甚至没有看到表的结构或他想要什么exactly@neal我同意你的看法,我想这就是他想要的,因为我们甚至还没有看到桌子的结构或他想要的东西。谢谢,我会重新考虑我的结构。@m1a2x3x7没问题,很乐意帮忙。^谢谢,我会重新考虑我的结构。@m1a2x3x7没问题,很乐意帮忙^_^