我的数据库中有大约10行,其中3行的状态==为'通过'。我在下面的代码中注意到的问题是使用foreach循环。它不想正常工作。我甚至无法让脚本将jSON数据发送回浏览器,这意味着脚本没有处理过foreach语句。有人知道如何解决这个问题吗?
public function logsig() {
header('Content-type:application/json');
$postedUser = $this->input->post('username');
$password = $this->input->post('password');
$hashedPass = $this->encrypt->sha1($password);
$query = $this->db->query("SELECT * FROM users WHERE username = '{$postedUser}' AND password = '{$hashedPass}'");
foreach ($query->result() as $row) {
if ($row->status == "Pass") {
if ($query->num_rows() > 0) {
$this->session->set_userdata('logged', "1");
$this->session->set_userdata("username", "{$postedUser}");
echo json_encode(array('session_state' => true));
} else {
echo json_encode(array('session_state' => false));
}
} elseif ($row->status == "Fail" || "Pending") {
exit;
}
}
}
答案 0 :(得分:3)
您在循环的每次迭代中回显JSON。这将是这样的:
{"session_state": true}{"session_state": false}
这是无效的JSON。
你需要在循环之后构建一个数组,然后echo json_encode()
(只需一次)。
此外,elseif
应该是这样的:
elseif ($row->status == "Fail" || $row->status == "Pending")
答案 1 :(得分:1)
将elseif ($row->status == "Fail" || "Pending") {
替换为
elseif ($row->status == "Fail" || $row->status == "Pending") {
你在elseif块
的第二个条件中缺少$row->status ==