我在phpMyAdmin中创建存储过程通过cpanel-> Localhost当我在phpMyAdmin中调用时它正确执行但是当我在我的在线调用它时显示以下错误。
CREATE DEFINER=`username`@`localhost` PROCEDURE `GetAccountingLedger`()
DETERMINISTIC
BEGIN
SET @csum := 0;
SELECT posting_date, order_date_time, order_no, voucher_no, recovery_acc, product_name, dr_amount, cr_amount, (@csum := @csum + dr_amount - cr_amount) AS balance
FROM `voucher_s` WHERE recovery_acc=(SELECT username FROM username_for_accounting_ledger);
END
警告:mysql_fetch_assoc():提供的参数不是第6行/home/cloudmar/public_html/php/general/test_s_procedure.php中的有效MySQL结果资源
$sql = mysql_query("call GetAccountingLedger()");
while($result = mysql_fetch_assoc($sql)){
echo $result['order_date_time'].'<br>';
}
请有人帮助我。 感谢。
答案 0 :(得分:1)
mysql_query
的返回值是不明确的:它是在后续调用中使用的ressource,如果发生错误则是false
。
由于错误消息,后者已经发生。您应该首先处理错误,如
$sql = mysql_query("call GetAccountingLedger()");
if ( $sql === false )
{
// mysql error handling
}
else
{
while($result = mysql_fetch_assoc($sql)){
echo $result['order_date_time'].'<br>';
}
}
答案 1 :(得分:0)
如果... WHERE recovery_acc=(SELECT username FROM username_for_accounting_ledger);
中的子查询提供了多个结果记录,这很可能是因为它没有where子句,整个查询将被拒绝并出现错误。
这可能是PHP-mysql_query抛出错误的原因。