Php SELECT和Prepared语句的JSON输出

Php SELECT和Prepared语句的JSON输出,php,mysql,json,prepared-statement,Php,Mysql,Json,Prepared Statement,我正在尝试将SELECT查询的结果和准备好的语句编码到JSON输出中。我有下面的代码,但我不能让它工作。任何帮助都将不胜感激 $query = "SELECT Item.ItemID, Item.ItemName FROM Items" $stmt = $db->prepare($query); $stmt->execute(); $stmt->store_result(); $numrows = $stmt->num_rows;

我正在尝试将SELECT查询的结果和准备好的语句编码到JSON输出中。我有下面的代码,但我不能让它工作。任何帮助都将不胜感激

$query = "SELECT Item.ItemID, Item.ItemName FROM Items"
    $stmt = $db->prepare($query);
    $stmt->execute();
    $stmt->store_result();
    $numrows = $stmt->num_rows;
    $stmt->bind_result($ItemID, $ItemName);

 for ($i=0; $i <$numrows; $i++) {
    $stmt->fetch();

$JSONArray = ["ItemID" => $ItemID,
             "ItemName" => $ItemName
             ]

echo json_encode($JSONArray);
}
$query=“从项目中选择Item.ItemID、Item.ItemName”
$stmt=$db->prepare($query);
$stmt->execute();
$stmt->store_result();
$numrows=$stmt->num_行;
$stmt->bind_result($ItemID,$ItemName);
对于($i=0;$i fetch();
$JSONArray=[“ItemID”=>$ItemID,
“ItemName”=>$ItemName
]
echo json_encode($JSONArray);
}

您应该始终将项目添加到容器数组中,而不是覆盖整个数组并仅编码和回显一次:

...

$JSONArray = []; // initialize to empty array
for ($i=0; $i <$numrows; $i++) {
    $row = $stmt->fetch();
    $ItemID = $row['ItemID'];
    $ItemName = $row['ItemName'];
    // add the new item in each iteration
    $JSONArray[] = ["ItemID" => $ItemID,
             "ItemName" => $ItemName
             ];
}
echo json_encode($JSONArray);
。。。
$JSONArray=[];//初始化为空数组
对于($i=0;$i fetch();
$ItemID=$row['ItemID'];
$ItemName=$row['ItemName'];
//在每个迭代中添加新项
$JSONArray[]=[“ItemID”=>$ItemID,
“ItemName”=>$ItemName
];
}
echo json_encode($JSONArray);

您应该始终将项目添加到容器数组中,而不是覆盖整个数组并仅编码和回显一次:

...

$JSONArray = []; // initialize to empty array
for ($i=0; $i <$numrows; $i++) {
    $row = $stmt->fetch();
    $ItemID = $row['ItemID'];
    $ItemName = $row['ItemName'];
    // add the new item in each iteration
    $JSONArray[] = ["ItemID" => $ItemID,
             "ItemName" => $ItemName
             ];
}
echo json_encode($JSONArray);
。。。
$JSONArray=[];//初始化为空数组
对于($i=0;$i fetch();
$ItemID=$row['ItemID'];
$ItemName=$row['ItemName'];
//在每个迭代中添加新项
$JSONArray[]=[“ItemID”=>$ItemID,
“ItemName”=>$ItemName
];
}
echo json_encode($JSONArray);

你不认为应该是
项目
而不是
项目
?还有缺少引号和分号

$query = "SELECT Items.ItemID, Items.ItemName FROM Items";
$stmt = $db->prepare($query);
$stmt->execute();
$result = $stmt->fetchAll();

echo json_encode($result);

同样出于惯例,我建议您保留小写的表名。:)

您不认为应该是
而不是
?还有缺少引号和分号

$query = "SELECT Items.ItemID, Items.ItemName FROM Items";
$stmt = $db->prepare($query);
$stmt->execute();
$result = $stmt->fetchAll();

echo json_encode($result);

同样出于惯例,我建议您在创建PDO对象add时保留小写的表名。:)

array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
e、 g:

$db = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASSWORD, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
这对我的情况有帮助:)


创建PDO对象添加时,如上所示:

array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
e、 g:

$db = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASSWORD, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
这对我的情况有帮助:)


上所示,代码中缺少引号($query没有第二个引号),如果这不是问题,请写下显示给您的错误是什么请添加进一步的信息,它是如何工作的,是否有任何错误?第1行末尾缺少分号。代码中缺少引号($query没有第二个引号),如果这不是问题,请写下向您显示的错误。请添加更多信息,它是如何工作的,是否有任何错误?第1行末尾缺少分号。