mysql查询选择一列“”只返回一个结果

时间:2016-05-17 02:53:40

标签: 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 = 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

如果我执行查询:"SELECT nodeurl FROM ownership where userid = 'jgm'"我希望结果能够获得数组url_a,url_b和url_d

如果我为'seb'做,我应该回到url_c

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

我完全坚持了。

2 个答案:

答案 0 :(得分:1)

当您的语句返回超过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);
}

答案 1 :(得分:1)

我的数据库中有2个表 一个是节点" 其他是"节点配置"

节点是这样的: my tables

Actualy,这是我的代码

 $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>";

}

它会创建一个由&#39; jgm&#39;所拥有的所有网址的下拉列表。 (我当然会用变量替换它)。每个选项值都可以作为url本身,但是我希望每个选项的标签都是表格中的名称&#34;节点名称&#34;这与url相对应,因为用户可以更轻松地选择它。