Php mysql查询选择一列,其中&引用;只返回一个结果

Php mysql查询选择一列,其中&引用;只返回一个结果,php,mysql,Php,Mysql,现在,我的第一个问题是关于堆栈溢出的 $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "SELECT nodeurl FROM ownership where userid = 'jgm'"; $stmt = $conn->prepare($sql); $stmt->execute(); $config = $stmt->fetch(); $xx =

现在,我的第一个问题是关于堆栈溢出的

$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  $sql = "SELECT nodeurl FROM ownership where userid = 'jgm'";

$stmt = $conn->prepare($sql);
$stmt->execute(); 
        $config = $stmt->fetch();
$xx = sizeof($config);

echo var_dump($config);
mysql表如下所示:

id - nodeurl - userid
-----------------------
1  - url_a   - jgm
2  - url_b   - jgm
3  - url_c   - seb
4  - url_d   - jgm
如果我执行以下查询:
“从所有权中选择nodeurl,其中userid='jgm'”
我希望得到的结果是数组url\u a、url\b和url\d

如果我为“seb”做这件事,我应该得到url\u c

我正在通过mysql客户端控制台运行查询,它运行得很好。当我通过php执行代码时,我只收到第一个结果(仅一行)


我完全无法理解这一点。

当您的语句返回的行数超过1行时,您必须使用一个函数将所有数据检索到一个数组中。对我来说,我喜欢使用fetch_assoc

$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  $sql = "SELECT nodeurl FROM ownership where userid = 'jgm'";

$stmt = $conn->prepare($sql);
$result = $stmt->execute(); 
while($config = $result->fetch_assoc()){
$xx = sizeof($config);

echo var_dump($config);
}
我的数据库中有两个表 一个是“节点” 另一个是“节点配置”

节点如下所示:

实际上,这是我的代码

 $sql = "SELECT nodeurl FROM ownership where userid = 'jgm'";

$stmt = $conn->prepare($sql);
$stmt->execute(); 
echo "<select>";
while($config = $stmt->fetch(PDO::FETCH_ASSOC)){    
    echo "<option value='".$config['nodeurl']."'>".$config['nodeurl']."</option>";
}
echo "</select>";

}
$sql=“从所有权中选择nodeurl,其中userid='jgm';
$stmt=$conn->prepare($sql);
$stmt->execute();
回声“;
而($config=$stmt->fetch(PDO::fetch_ASSOC)){
echo“$config['nodeurl']”;
}
回声“;
}

它确实创建了一个包含“jgm”所有url的下拉列表(当然,我会用一个变量替换它)。每个选项的值都可以是url本身,但我希望每个选项的标签都是与url对应的表“节点名称”中的名称,因为它们更易于用户选择。

如果我的答案对您有帮助,请随意投票并选择为可接受的答案:)只返回一个结果。您可以使用来获得所有结果。