0

我需要 php/mysql 取 3 个赋值标记(由用户插入),将它们加在一起,然后除以 3 以获得平均标记。然后需要将该平均分插入表中的成绩列中。

这是代码;

$a1 = $_REQUEST['ass1'];
$a2 = $_REQUEST['ass2'];
$a3 = $_REQUEST['ass3'];
$id = $_REQUEST['id'];
$t = '3';
$sum = "'$a1' + '$a2' + '$a3'";
$average = (int)($sum / $t);

mysql_select_db("kackieco_final",$con);
$q = "UPDATE grades SET ass1=$a1, ass2=$a2, ass3=$a3, grade=$average WHERE id = $id";
4

2 回答 2

1

您的 $sum 是一个包含 3 个数字和数学运算符的字符串。

字面上地

'1' + '2' + '3'
// string(15) "'1' + '2' + '3'"

http://codepad.org/Nxcdrkyk

摆脱引号

$sum = $a1 + $a2 + $a3;
// int(6)

http://codepad.org/RWvTSfv8

你会得到你的int

于 2012-04-19T17:38:19.490 回答
0

这是一个示例,在您的代码中,您将值视为字符串:

<?php
//Example values, simulate a request
$_REQUEST['id']='25';
$_REQUEST['ass1']='17';
$_REQUEST['ass2']='28';
$_REQUEST['ass3']='32';


//Get and check the values from the user
$values=array();
$values['id'] = (isset($_REQUEST['id']) && is_numeric($_REQUEST['id']))?$_REQUEST['id']:0;
$values[1] = (isset($_REQUEST['ass1']) && is_numeric($_REQUEST['ass1']))?$_REQUEST['ass1']:0;
$values[2] = (isset($_REQUEST['ass2']) && is_numeric($_REQUEST['ass2']))?$_REQUEST['ass2']:0;
$values[3] = (isset($_REQUEST['ass3']) && is_numeric($_REQUEST['ass3']))?$_REQUEST['ass3']:0;
$values['t'] = 3;

//one line add the variables together then devide by 3 and then round down or up depending on whats closest
$values['average'] = round(( ($values[1] + $values[2] + $values[3]) / $values['t'])); //26


$q = "UPDATE grades SET ass1={$values[1]}, ass2={$values[2]}, ass3={$values[3]}, grade={$values['average']} WHERE id = {$values['id']}";

echo $q;
//UPDATE grades SET ass1=17, ass2=28, ass3=32, grade=26 WHERE id = 25
?>
于 2012-04-19T17:29:44.287 回答