我需要在 php 中运行 mysql:
$sql_subject_summary = "SELECT
c.subject_code_id, c.subject_name, @total_target:= SUM(s.total_target_question) AS total_target_question,
@total_correct := ROUND((RAND() * (@total_target-10))+10) AS total_correct,
(@total_correct / @total_target)*100 AS percent, c.icon_filename
FROM
edu_subject_code c LEFT JOIN wkp_wg_student_subject s ON c.subject_code_id=s.subject_code_id
WHERE s.student_id=$student_id AND s.week_id = $current_week_id
$sql_inject
GROUP BY s.subject_code_id ";
但是,@total_ Correct、@total_target
的值在 php mysql 执行时返回 null 。
当我在mysql IDE中运行时,结果是好的。
如何解决这个问题?
最佳答案
这是正确的原因,要使其工作,您需要使用SELECT INTO...
构造,例如select col1 into @arg1 from tbl1
。此外,既然您是从 PHP 运行查询,为什么还需要它呢?如果您确实需要,请考虑将查询包装在存储过程中,并将这些参数作为 OUT
参数。
嗯,它返回 null,因为您没有选择这些参数。查询执行后,您需要选择这些参数:select @total_ Correct, @total_target;
。
为什么不按原样运行查询(如下所示)并获取特定列的值
SELECT
c.subject_code_id, c.subject_name, SUM(s.total_target_question) AS total_target_question,
ROUND((RAND() * (@total_target-10))+10) AS total_correct,
(@total_correct / @total_target)*100 AS percent, c.icon_filename
FROM
edu_subject_code c LEFT JOIN wkp_wg_student_subject s ON c.subject_code_id=s.subject_code_id
WHERE s.student_id=$student_id AND s.week_id = $current_week_id
$sql_inject
GROUP BY s.subject_code_id
关于php - @variable mysql 在 php mysql 执行时返回空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41165546/