我有两个MySQL表。一个名为members
,名为users
。另一个名为sex
,有两列:user_s
和sex
。
我正在尝试创建一个由成员表中的所有用户组成的数组
1)在性别表中2)在性别栏中选择“男性”。
当我print_r
此数组时,即使我看到有符合这些条件的用户,也不会显示任何内容。有什么想法吗?
<?php
// test.php
include_once("header.php");
$iaminterestedin = "men";
$result = queryMysql("SELECT `user` FROM `members`
WHERE `user` IN(SELECT `user_s` FROM `sex` WHERE sex='$iaminterestedin')");
$combination = array();
while(($row = mysql_fetch_assoc($result)))
{
$combination = $row['user'];
}
print_r($combination);
?>
答案 0 :(得分:1)
您应该使用$combination[] = $row['user']
向组合添加值,否则您将始终在每次循环迭代时覆盖值
您还应该阅读有关JOIN表的内容,这将对您提供很多类似的查询。例如,您将使用:
SELECT user FROM members INNER JOIN sex ON sex.user_s = members.user
WHERE sex '$iamintererstedin'
如果您将性别中的外键(http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html)添加到用户,这将提高查询性能,当它变大并且时间成为问题时
答案 1 :(得分:1)
尝试替换
行$combination = array();
使用
$combination[] = $row['user'];
这是插入到数组中的方法:
答案 2 :(得分:0)
我更换了$ combination = $ row ['user'];
与
$ combination [] = $ row ['user'];
这就是诀窍。