Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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_Sql - Fatal编程技术网

Php MySQL从多个表中提取信息问题

Php MySQL从多个表中提取信息问题,php,mysql,sql,Php,Mysql,Sql,我试图从两个不同的表中访问信息,并检索信息,但这一切都会多次拉入用户信息,等待表tbl_fruits中列出多少水果 希望能够一次显示用户信息,同时提取与用户关联的任意数量的果实 2个表: tbl_用户: 用户ID 名字 姓氏 tbl_水果: 用户ID 果 在示例代码中,userID 4在tbl_fruit中有3个与他相关联的结果。从下面的结果可以看出,用户信息被多次列出。我如何重写代码,使用户信息被提取一次,结果显示三次 $clientID = "4"; try { $stmt = $

我试图从两个不同的表中访问信息,并检索信息,但这一切都会多次拉入用户信息,等待表tbl_fruits中列出多少水果

希望能够一次显示用户信息,同时提取与用户关联的任意数量的果实

2个表: tbl_用户: 用户ID 名字 姓氏

tbl_水果: 用户ID 果

在示例代码中,userID 4在tbl_fruit中有3个与他相关联的结果。从下面的结果可以看出,用户信息被多次列出。我如何重写代码,使用户信息被提取一次,结果显示三次

$clientID = "4";

try 
{    $stmt = $dbcon1 ->query("SELECT 
                tbl_fruits.fruit,
                tbl_users.userid,
                tbl_users.firstname,
                tbl_users.lastname
               FROM tbl_users
                 LEFT JOIN tbl_fruits 
               ON tbl_fruits.userid = tbl_users.userid     
                    WHERE  tbl_users.userid = '$clientID' ");                

    $testArray = $stmt->fetchAll(PDO::FETCH_ASSOC);            
} 
catch(PDOException $e) 
{    echo $e->getMessage(); }

echo '<pre>';
print_r($testArray);
echo '</pre>'; 

更改您的查询,如下所示:

count(tbl\u fruits.userid)
部分使用该行的值
tbl\u fruits.userid
计算唯一行的数量,而
部分按tbl\u用户进行分组。userid
部分消除重复项


确保在
tbl\u users.userid
tbl\u fruits.userid
上设置索引,以获得最佳性能。

您希望它返回什么?MySQL将始终在每一行中返回相同的列,因此您不能在第一行之后删除它们。。。可以编写一个查询,使其返回用户一次,然后在随后的每一行中为userid first name和last name返回NULL(但它们仍然存在)。。我能想到的另一个选项是使用group_concat,只返回一行,其中水果用逗号分隔或其他方式…您好,谢谢您的回放,但它确实列出了与用户相关的水果。
array
(
    [0] => Array
        (
            [fruit] => Apple
            [userid] => 4
            [firstname] => John
            [lastname] => Smith
        )

    [1] => Array
        (
            [fruit] => Orange
            [userid] => 4
            [firstname] => John
            [lastname] => Smith
        )

    [2] => Array
        (
            [fruit] => Banana
            [userid] => 4
            [firstname] => John
            [lastname] => Smith
        )

)
{    $stmt = $dbcon1 ->query("SELECT 
                count(tbl_fruits.userid) 
                tbl_users.userid,
                tbl_users.firstname,
                tbl_users.lastname
               FROM tbl_users
                 LEFT JOIN tbl_fruits 
               ON tbl_fruits.userid = tbl_users.userid     
                    WHERE  tbl_users.userid = '$clientID' 
                    GROUP BY tbl_users.userid ");