我的PHP中有这个:
$dbh = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$selected_client = $_POST['client'];
$sql = 'SELECT `cohort_id`,`cohort_name`, `cohort_description` FROM table_cohorts where client_id = :client';
$stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY) );
$stmt->execute(array(':client' => $selected_client));
foreach ($stmt as $row){
$result = $stmt->fetchAll();
}
header('Content-type: application/json');
echo json_encode($result);
这会返回几乎正确的内容。它返回我的db表中除第一个之外的所有相关的预期行。我猜我在某种程度上覆盖了这个,但不确定它在哪里出错。
答案 0 :(得分:3)
不确定为什么你在那里有一个foreach循环。您可以在$result
上使用foreach循环遍历行,这时您想要的是所有行,这样您就可以放弃循环。
foreach ($stmt as $row){
$result = $stmt->fetchAll();
}
并保留这一部分。
$result = $stmt->fetchAll();
答案 1 :(得分:1)
只需使用
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
并摆脱foreach
循环。