Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将值检索到数组中_Php_Mysql_Arrays_Loops - Fatal编程技术网

Php 将值检索到数组中

Php 将值检索到数组中,php,mysql,arrays,loops,Php,Mysql,Arrays,Loops,我正在尝试将所有分数

我正在尝试将所有分数<40的课程代码输入数组,并在某个地方进行回显。
print\r($carry\u over)
不返回任何内容

$carry_over = array(); 

while ($row8 = mysql_fetch_assoc($query8)) {

   if ($row8['score'] < 40) {
        $carry_over[] = array('m.course_code' =>$row8['course_code']);
   } 
}

print_r($carry_over);

$query8 = mysql_query("SELECT  m.score , m.course_code FROM maintable AS m  
                       INNER JOIN students AS s ON m.matric_no = s.matric_no
                       INNER JOIN courses AS c ON m.course_code = c.course_code
                       WHERE m.matric_no = '".$matric_no."'
                       AND m.level = '".$level."'
                       AND m.score < 40"
                      ) or die (mysql_error());
$carry_over=array();
while($row8=mysql\u fetch\u assoc($query8)){
如果($row8['score']<40){
$carry\u over[]=数组('m.course\u code'=>$row8['course\u code']);
} 
}
打印(结转);
$query8=mysql\u query(“从maintable中选择m.score、m.course\u代码作为m
在m.matric\u no=s.matric\u no上以s的形式内部连接学生
在m.course\u code=c.course\u code上以c的形式连接内部课程
其中m.matric_no=“$matric_no.”
m.level=“$level.”
m.得分<40“
)或者死(mysql_error());
阵列循环应为 如果($row8['score']<40)
$carry_over[]=$row8['course_code']

我认为您可能必须首先调试
$row8
数组。要查看内部的内容或可能什么都没有

您的$query8变量(数据库查询)应该在
while()函数之前定义。现在,
while()
函数对0行进行迭代,这当然会导致一个空数组

$carry_over = array(); 

while ($row8 = mysql_fetch_array($query8))
{
    $carry_over[] = $row8['course_code'];
}
由于您已经在
SELECT
查询中检查了分数小于40的行,因此
while()
函数中的检查是多余的。您还错过了课程代码前面的一句话(以前是一个点),最后;如果只需将值直接添加到第一个数组中,则无需在$carry\u over数组中添加数组

第二次更新

$matric_no = MAKE_SURE_TO_DEFINE_THIS;
$level = MAKE_SURE_TO_DEFINE_THIS;

// Fetch rows
$query8 = mysql_query("SELECT maintable.score, maintable.course_code, maintable.matric_no, maintable.level, students.matric_no, courses.course_code FROM maintable, students, courses WHERE (maintable.matric_no = '" . $matric_no . "' AND maintable.matric_no = students.matric_no) AND (maintable.course_code = courses.course_code) AND (maintable.level = '" . $level . "')");

$carry_over = array();

while ($row8 = mysql_fetch_array($query8))
{
    // Save data to array
    $carry_over[] = $row8['course_code'];
}

echo 'We found ' . mysql_num_rows($query8) . ' rows';

print_r($carry_over); // DEBUG

检查您的查询是否得分<40,然后通过echo sth在if语句中进行调试…如果没有,则表示查询没有得分<40…如果得分<40,我的语法肯定会起作用。我已经做了一个mysql_num_行($query8),它返回了2,这是正确的。我认为你的查询太复杂了。试试Tom的查询,下面你不需要内部连接…还有一件事要检查你的分数值类型。它是整数吗?@HieuVanMach-在我的查询中遗漏了一些东西,正要更改它,但删除了它,因为他说他实际上从他的,这证明了它是在为帮助工作。但在实现了您发现的错误之后,我仍然得到了相同的结果。Thanks@dotunoyesanmi-在将$query8移到while()函数之前,尝试用我刚才发布的代码替换您的代码。非常感谢您的更新。我更新了你的代码,还添加了print\u r($carry\u over);它返回。。。。。。数组()。这是否意味着查询是空的?但是当我在mysql_num_rows()中使用$query8时,我得到了2,这就是我所期望的。错误可能在哪里。Thanks@dotunoyesanmi-试试我刚刚在第二次更新中发布的代码!echo应该验证您是否得到了预期的2行,并且print_r()应该可以工作。。。如果你遇到任何问题,告诉我Hanks Tom,第二次更新现在运行良好。非常感谢你。现在我来标记你的答案。var_dump($row8)给出了一个错误答案是的,这就是答案。一开始没有结果。我做了一个mysql num rows($query8),它返回了2,这是正确的<代码>查询8
应该返回分数低于40的课程,那么为什么要进行
if
测试呢?