You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

函数内调用函数:按钮输出位置异常问题求助

解决按钮不在表格td内显示的问题

嘿,这个问题的根源很明确——你的createRatingButtons()函数是直接用echo输出按钮的,而不是返回HTML内容。

当你在displayGrades里写echo "<td>" . $this->createRatingButtons() . "</td>"时,PHP的执行顺序是这样的:

  1. 先执行createRatingButtons()里的所有代码,也就是直接echo出5个按钮,这时候按钮就被输出到页面上了(刚好在表格之前)
  2. 因为这个函数没有return语句,所以它默认返回null,最后拼接出来的就是<td></td>,相当于这个td是空的

修正方案:让函数返回HTML字符串而不是直接输出

把createRatingButtons()改成下面这样,把按钮内容拼接成字符串后返回:

public function createRatingButtons(){
    $buttonHtml = '';
    for($count=1;$count<=5;$count++){
        $buttonHtml .= "<button onclick=''><b>$count</b></button> ";
    }
    return $buttonHtml;
}

你的调用代码不需要做任何修改,现在"<td>" . $this->createRatingButtons() . "</td>"会正确把按钮内容嵌入到td标签里,按钮就会乖乖显示在表格的对应列中了。

额外的安全提示

顺便提一句,你当前的SQL查询存在SQL注入风险,直接把变量拼接到SQL语句里是非常不安全的。建议改用mysqli的预处理语句,示例如下:

// 替换原来的SQL查询部分
$sql = "SELECT * FROM grading WHERE studentID = ? AND unitID = ?";
$stmt = mysqli_prepare($obj->conn, $sql);
// 绑定参数,"ss"表示两个字符串类型的参数(如果studentID和unitID是数字,就用"ii")
mysqli_stmt_bind_param($stmt, "ss", $studentID, $unitID);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
$row = mysqli_fetch_assoc($result);

这样能有效避免恶意用户通过构造特殊值来攻击你的数据库。

内容的提问来源于stack exchange,提问作者user9825963

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:18:31