当我使用 json_encode(( 函数时,该方法返回一个 Json,其两次值相同:一个带有字符串键,一个带有索引。我以前没有这个问题。
$req = $bdd->prepare("SELECT mail,description FROM identifiant WHERE mail = :mail AND pass=:pass");
if ($req->execute(array(
'mail' => $_COOKIE['mail'],
'pass' => $_COOKIE['pass']))) {
header('Content-type: application/json');
return json_encode($req->fetchAll());
回应:
[
{
"mail": "root@root.com",
"0": "root@root.com",
"description": "a description",
"1": "a description"
}
]
我该怎么做没有索引键?
使用 PDO::FETCH_ASSOC 获取模式:
return json_encode($req->fetchAll(PDO::FETCH_ASSOC));
这不是json_encode
,这是因为您的 PDO 实例的获取模式设置为 PDO::FETCH_BOTH
。有关PDOStatement::fetchAll
的获取样式,请参阅文档。
使用这个:
PDO::FETCH_ASSOC:返回按列索引的数组 结果集中返回的名称 PDO::FETCH_BOTH(默认值(:返回索引为 列名和 0 索引列号(如 结果集 PDO::FETCH_BOUND:返回TRUE
并分配 结果中的列的值设置为 PHP 变量 它们与 PDOStatement::bindColumn(( 绑定 方法
PDO::FETCH_CLASS:返回 请求的类,将结果集的列映射到 类中的属性。如果fetch_style 包括 PDO::FETCH_CLASSTYPE(例如 PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE( 则类的名称为 根据第一列的值确定。
PDO::FETCH_INTO:更新现有实例 请求的类,将结果集的列映射到 类中的命名属性
PDO::FETCH_LAZY:组合 PDO::FETCH_BOTH 和 PDO::FETCH_OBJ, 在访问对象变量名称时创建对象变量名称
PDO::FETCH_NUM:返回按列索引的数组 结果集中返回的编号,从第 0 列开始
PDO::FETCH_OBJ:返回一个匿名对象 与 结果集
PDOStatement::fetch
return json_encode($req->fetchAll(PDO::FETCH_ASSOC));
你必须使用 PDO::FETCH__ASSOC 作为参数
$req = $bdd->prepare("SELECT mail,description FROM identifiant WHERE mail = :mail AND pass=:pass");
if ($req->execute(array(
'mail' => $_COOKIE['mail'],
'pass' => $_COOKIE['pass']))) {
header('Content-type: application/json');
return json_encode($req->fetchAll(PDO::FETCH_ASSOC));
}