我有一些来自我在表格上发布的数据库的数据。对于表的每一行(while 循环的每个循环),我需要调用一个存储过程来计算<td>
我的表的最后一个数据。
这里有一些代码:
$s = $lk->query("SELECT *
FROM A_USERS
JOIN A_DATA
WHERE A_DATA.id_user = A_USERS.id
AND A_USERS.usr_att = 1
AND A_DATA.act_data = 1
AND A_DATA.a_att = 1
AND A_DATA.qty IS NOT NULL
ORDER BY ID ASC");
while ($dato = $s->fetch_object()) {
print '<tr>';
print '<td>';
print $dato->id;
print '</td>';
//others cells
$GetP = $lk->query("CALL GetPr($dato->qty, '$dato->prod')");
if(mysqli_num_rows($GetP) === 1){
while($p_db = mysqli_fetch_array($GetP)){
$p = $p_db['p'];
}
$format = number_format(round($p, 1), 2, ',', '\'');
//some other stuff here...
}else{
print '<td>';
print 'ERROR';
print '</td>';
}
print '</tr>';
}
问题是只有第一个循环while
调用返回的过程1 row
。否则我总是ERROR
在这<td>
意味着存储过程没有返回1 row
。
为什么?
编辑
存储过程:
CREATE DEFINER=`...` PROCEDURE `GetPr`(IN `cli_qty` INT, IN `cli_prod` VARCHAR(10) CHARSET ascii)
BEGIN
SET @cli_qty = cli_qty;
SET @q = (SELECT qty FROM MRG_H ORDER BY ABS(@cli_qty - qty) ASC LIMIT 1);
SET @cli_prod = cli_prod;
IF @cli_prod = 'OECO' THEN SET @marg = (SELECT (m+v) FROM MRG_H JOIN DT WHERE m <> '' AND q = @q AND par = 'MarOECO');
ELSE SET @marg = (SELECT m FROM MRG_H WHERE m <> '' AND q = @q);
END IF;
SELECT (Med+@marg)*((Val+100)/100) AS P, D_aaaammgg AS Date
FROM PL
JOIN TVA
WHERE I_D = 0
AND Med <> ''
AND Date_f = ''
ORDER BY Iden DESC
LIMIT 1;
END
MYSQLI 错误:
Error: 2014-Commands out of sync; you can't run this command now