Php MySQL为每个请求的字段返回2个值
使用select语句执行查询()时,结果包含字段的两个条目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=>值,或者有没有一种方法可以快速删除额外
$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);