我正在尝试返回用户注册的所有课程的列表(course1,course2等)。目前,我有以下代码:
$mysqli = new mysqli("localhost","username","password","sampleTest");
if (mysqli_connect_errno()) {
printf("Can't connect to SQL Server. Error Code %s\n", mysqli_connect_error($mysqli));
exit;
}
// Set the default namespace to utf8
$mysqli->query("SET NAMES 'utf8'");
$json = array();
if($result = $mysqli->query("select course1 from users where username ='test'")) {
while ($row=$result->fetch_assoc()) {
$json[]=array(
'courses'=>$row['course1'],
);
}
}
$result->close();
header("Content-Type: text/json");
echo json_encode(array( 'courses' => $json ));
$mysqli->close();
我可以获得第一个课程但不能显示其他课程。我已经尝试了select * from users where username ='test'
,但我仍坚持沿阵列传递。
答案 0 :(得分:2)
您的数据库似乎设计错误。
这些课程应存储在单独的表格中,而不是存储在用户表格中 然后它可以很容易地检索。
为了更加肯定地回答,需要更多数据库结构数据。
答案 1 :(得分:0)
如果您正在做类似的事情该怎么办:
<?php
...
$json = array();
$json['courses'] = array();
if($result = $mysqli->query("select course1 from users where username ='test'")) {
while ($row=$result->fetch_assoc()) {
$json['courses'][] = $row['course1'];
}
}
...
?>
答案 2 :(得分:0)
如果您只想列出课程,则不需要所有这些行。
while ($row=$result->fetch_assoc()) {
$json[]=array(
'courses'=>$row['course1'],
);
}
这就够了
while ($row=$result->fetch_assoc()) {
$json[]= $row['course1'] ;
}
答案 3 :(得分:0)
尝试执行此操作:
$mysqli = new mysqli("localhost","username","password","sampleTest");
if (mysqli_connect_errno()) {
printf("Can't connect to SQL Server. Error Code %s\n", mysqli_connect_error($mysqli));
exit;
}
// Set the default namespace to utf8
$mysqli->query("SET NAMES 'utf8'");
$json = array();
if($result = $mysqli->query("select * from users where username ='test'")) {
while ($row=$result->fetch_assoc()) {
$json[]=array(
'courses'=> array(
'cource1' => $row['course1'],
'cource2' => $row['course2'],
'cource3' => $row['course3'],
),
);
}
}
$result->close();
header("Content-Type: text/json");
echo json_encode(array( 'courses' => $json ));
$mysqli->close();
假设您的users表中包含名为'course1','course2','course3'等字段和'username'字段。 您可以在sql查询中的SELECT关键字之后执行*或只列出必需的字段(以逗号分隔)。 例如,您有一个名为test的用户:
username course1 course2 course3
test Yes Yes No
你只会从表中收到一行。 你会得到
//var_dump($json);
array(1) {
[0]=>
array(1) {
["cources"]=>
array(3) {
["cource1"]=>
string(3) "Yes"
["cource2"]=>
string(3) "Yes"
["cource3"]=>
string(2) "No"
}
}
}
执行上述代码后。 然后你只需要json_encode()这个数组。 希望它会有所帮助。