从PHP4迁移到PHP5

从PHP4迁移到PHP5,php,report,Php,Report,您看到的代码来自生成下拉列表的应用程序。您从下拉列表中选择,它将生成一个报告。我正在将此应用程序从旧版本的php迁移到最新版本,但无法在表单上生成列表。谁能告诉我我做错了什么或者需要改变什么。我不是一个PHP开发人员,我正在学习,但我还不在那里 function getcourses(){ $query = "SELECT DISTINCT * FROM courses"; $result = mysqli_query($dbc,$query); while($row = mysql_

您看到的代码来自生成下拉列表的应用程序。您从下拉列表中选择,它将生成一个报告。我正在将此应用程序从旧版本的php迁移到最新版本,但无法在表单上生成列表。谁能告诉我我做错了什么或者需要改变什么。我不是一个PHP开发人员,我正在学习,但我还不在那里

function getcourses(){
$query = "SELECT DISTINCT * FROM courses"; 



$result = mysqli_query($dbc,$query); 
while($row = mysql_fetch_array($result)){

$course_id = $row['course_id'];
$course_no = $row['course_no'];
$course_name = $row['course_name'];
$start_month = $row['start_month'];
$start_day = $row['start_day'];
$start_year = $row['start_year'];
$end_month = $row['end_month'];
$end_day = $row['end_day'];
$end_year = $row['end_year'];

$course_date = $start_month . " " .  $start_day . ", " . $start_year . " - " . $end_month . " " .  $end_day . ", " . $end_year;

echo '<option value="' . $course_id . '~' . $course_date . '">' . $course_name . ', ' .  $course_date . '</option>';
}
}

?>
<p>Please select the course roster you would like to download from the list below</p>
<form action="download_excel.php" name="reportrequest" method="POST">
<select name="course_report">
<?php getcourses() ?>
</select>
<input class="btn btn-primary" type="submit" name="submit" id="submit" value="Retrieve Report" />
</form>
函数getcourses(){ $query=“从课程中选择不同的*”; $result=mysqli_查询($dbc,$query); while($row=mysql\u fetch\u数组($result)){ $course_id=$row['course_id']; $course_no=$row['course_no']; $course_name=$row['course_name']; $start_month=$row['start_month']; $start_day=$row['start_day']; $start_year=$row['start_year']; $end_month=$row['end_month']; $end_day=$row['end_day']; $end_year=$row['end_year']; $course_date=$start_month.“$start_day.”、“$start_year.”、“$start_year.”-“$end_month.”、“$end_day.”、“$end_year; 回显“.$course\u name.”,“.$course\u date.”; } } ?> 请从下面的列表中选择要下载的课程花名册


这就是新代码的样子,我仍然会遇到这个错误: PHP警告:mysqli_fetch_array()希望参数1是mysqli_结果,布尔值在

这发生在这一行:while($row=mysqli\u fetch\u数组($result))

函数连接(){
$dbc=mysqli\u connect(DB\u主机、DB\u用户、DB\u密码);
返回$dbc;
}
函数getcourses(){
$query=“从课程中选择”;
$result=mysqli_查询(connect(),$query);
while($row=mysqli\u fetch\u数组($result)){
$course_id=$row['course_id'];
$course_no=$row['course_no'];
$course_name=$row['course_name'];
$start_month=$row['start_month'];
$start_day=$row['start_day'];
$start_year=$row['start_year'];
$end_month=$row['end_month'];
$end_day=$row['end_day'];
$end_year=$row['end_year'];
$course_date=$start_month.“$start_day.”、“$start_year.”、“$start_year.”-“$end_month.”、“$end_day.”、“$end_year;
回显“.$course\u name.”,“.$course\u date.”;
}
}

问题1

您使用的是
$dbc
,即使您的函数未定义和/或未使用它。如果实际定义了它,则需要将其作为参数传递给函数,以便其中的代码可以使用它:

function getcourses($dbc){
问题2

您正在混合使用
mysql
mysqli
函数:

$result = mysqli_query($dbc,$query); 
while($row = mysql_fetch_array($result)){
应该是

$result = mysqli_query($dbc,$query); 
while($row = mysqli_fetch_array($result)){

如果连接也使用函数,则更好

比如:

function coonect() {
$con = mysqli_connect(host,user,pass,db);
return $con;
}
使用:

function getcourses(){
...
$result = mysqli_query(coonect(),$query);
...
}

对不起,我的英语不好

您遇到了什么错误?您无法混合和匹配mysql_*和mysqli_*函数。这是我遇到的错误之一:mysqli_query()希望参数1为mysqli,在中给出null。还一直说$dbc是一个未定义的变量。我做了更改,但仍然没有在下拉列表中看到结果。看起来它没有将结果放入表单中。我仍然收到此错误:PHP警告:mysqli_fetch_array()期望参数1为mysqli_result,布尔值在中给出。下面是它发生的代码行:虽然($row=mysqli\u fetch\u array($result))有什么东西导致查询失败。不幸的是,我不能从这里排除故障。看看mysqli_eror()告诉你什么。
function getcourses(){
...
$result = mysqli_query(coonect(),$query);
...
}