Php MySQL为每个请求的字段返回2个值

Php MySQL为每个请求的字段返回2个值,php,mysql,pdo,Php,Mysql,Pdo,使用select语句执行查询()时,结果包含字段的两个条目 $sql = "select first_name, last_name from users"; $rslt = $conn->query($sql); 在上面的示例中,结果将在数组中包含4项。2,键的整数递增,一个键设置为“first_name”,另一个键设置为“last_name” 我确信这是一个愚蠢的问题,但是有没有一种快速的方法可以改变结果的返回方式,使每个字段只包含一个key=>值,或者有没有一种方法可以快速删除额外

使用select语句执行查询()时,结果包含字段的两个条目

$sql = "select first_name, last_name from users";
$rslt = $conn->query($sql);
在上面的示例中,结果将在数组中包含4项。2,键的整数递增,一个键设置为“first_name”,另一个键设置为“last_name”

我确信这是一个愚蠢的问题,但是有没有一种快速的方法可以改变结果的返回方式,使每个字段只包含一个key=>值,或者有没有一种方法可以快速删除额外的数据

我想要的最终数组是两件事之一

要求的结果1

Array ( [first_name] => Bill [last_name] => Johnson )
要求的结果2

Array ( [0] => Bill [1] => Johnson )

提前感谢。

如果您正在使用PDO,您可以设置获取模式

$rslt = $conn->query($sql, PDO::FETCH_ASSOC);
它默认返回两种类型


有关更多信息,请参见

如果使用PDO,则可以设置提取模式

$rslt = $conn->query($sql, PDO::FETCH_ASSOC);
它默认返回两种类型


有关更多信息,请参见。您可以将第二个参数传递给
query()
,以更改模式。在您的情况下,
PDO::FETCH_ASSOC
PDO::FETCH_NUM
。我假设默认值是
PDO::FETCH_BOTH
,它在结果数组中创建索引和列名。

您可以将第二个参数传递给
query()
,以更改模式。在您的情况下,
PDO::FETCH_ASSOC
PDO::FETCH_NUM
。我假设默认值是
PDO::FETCH_BOTH
,它在结果数组中创建索引和列名。

请参阅FETCH_style下的手册:

FETCH_ASSOC:返回按列名索引的数组 在你的结果集中

FETCH_eath(默认):返回由这两列索引的数组 结果集中返回的名称和0索引列编号

FETCH_-BOUND:返回TRUE并指定列的值 在您的结果集中,设置与之绑定的PHP变量 PDOStatement::bindColumn()方法

PDO::FETCH_类:返回请求类的新实例, 将结果集的列映射到 班级。如果fetch_样式包括PDO::fetch_类类型(例如。 PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE)然后类的名称是 根据第一列的值确定

PDO::FETCH_INTO:更新请求类的现有实例, 将结果集的列映射到类中的命名属性

PDO::FETCH_LAZY:将PDO::FETCH_和PDO::FETCH_OBJ结合起来,创建 对象变量在被访问时的名称

FETCH_NAMED:返回一个与 PDO::FETCH_ASSOC,除非有多个列具有 如果名称相同,则该键引用的值将是所有 具有该列名的行中的值

FETCH_NUM:返回一个按列号索引的数组 在结果集中,从第0列开始

FETCH_OBJ:返回一个匿名对象,其属性名为 与结果集中返回的列名相对应

您需要的是适当的fetch样式,而不是作为
fetch()
的第一个参数的
PDO::fetch\u BOTH
(默认值)

您要做的是使用
query()
返回的对象


我相信这会起作用,但我还没有测试fetchAll是否可以在同一条语句上运行两次。

请查看fetch\u style下的手册:

FETCH_ASSOC:返回按列名索引的数组 在你的结果集中

FETCH_eath(默认):返回由这两列索引的数组 结果集中返回的名称和0索引列编号

FETCH_-BOUND:返回TRUE并指定列的值 在您的结果集中,设置与之绑定的PHP变量 PDOStatement::bindColumn()方法

PDO::FETCH_类:返回请求类的新实例, 将结果集的列映射到 班级。如果fetch_样式包括PDO::fetch_类类型(例如。 PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE)然后类的名称是 根据第一列的值确定

PDO::FETCH_INTO:更新请求类的现有实例, 将结果集的列映射到类中的命名属性

PDO::FETCH_LAZY:将PDO::FETCH_和PDO::FETCH_OBJ结合起来,创建 对象变量在被访问时的名称

FETCH_NAMED:返回一个与 PDO::FETCH_ASSOC,除非有多个列具有 如果名称相同,则该键引用的值将是所有 具有该列名的行中的值

FETCH_NUM:返回一个按列号索引的数组 在结果集中,从第0列开始

FETCH_OBJ:返回一个匿名对象,其属性名为 与结果集中返回的列名相对应

您需要的是适当的fetch样式,而不是作为
fetch()
的第一个参数的
PDO::fetch\u BOTH
(默认值)

您要做的是使用
query()
返回的对象


我相信这会起作用,但我还没有测试fetchAll是否可以在同一条语句上运行两次。

$result->fetch\u assoc()
。。我猜你使用的是
\u array
@msfoster,那是mysqli,不是pdoOh,没有看到标签。很抱歉但是问题是一样的。对不起,我应该在消息中声明PDO@msfoster如果是同一个问题,我如何使用PDO实现它?
$result->fetch_assoc()
。。我猜你使用的是
\u array
@msfoster,那是mysqli,不是pdoOh,没有看到标签。很抱歉问题是豪
$sql = "select first_name, last_name from users";
$stmt = $conn->query($sql);
$num = $stmt->fetchAll(PDO::FETCH_NUM);
$assoc = $stmt->fetchAll(PDO::FETCH_ASSOC);