如何将数据从函数one传递到函数two?PHP代码求助
解决PHP函数间变量传递的问题
首先咱们先梳理下你代码里的核心情况:其实你已经在one函数里完成了变量传递的动作(通过two($get_ward)调用),但有几个细节问题导致功能没达到预期,咱们一步步来修正:
原代码的问题点
- 如果数据库查询没有返回结果,
$get_ward会处于未定义状态,调用two函数时会触发未定义变量的警告 two函数里的var_dump($mine);die;会直接终止脚本,后续的数据库相关代码完全没机会执行- 缺少对查询失败的判断(比如
$db->Execute可能返回false)
修正后的代码示例
function one($one_nr) { global $db; // 执行查询并先处理异常情况 $query = "SELECT one_ward FROM ward WHERE ward_nr =" . $db->qstr($one_nr); $exe = $db->Execute($query); // 检查查询是否成功执行 if (!$exe) { // 这里可以添加错误处理逻辑,比如记录日志 return false; } $get_ward = null; while ($row = $exe->FetchRow()) { $get_ward = $row['one_ward']; // 注意:如果查询返回多行数据,这里会覆盖掉之前的$get_ward,只保留最后一行的值 // 如果需要获取所有结果,建议改成数组存储:$get_ward[] = $row['one_ward']; } // 只有当查询到有效数据时,才调用two函数传递变量 if ($get_ward !== null) { $mine = two($get_ward); // 这里可以继续使用$mine的返回值做后续逻辑处理 } else { // 处理没有查询到结果的场景 echo "未找到对应编号的病房信息"; } } function two($mine) { // 调试用的var_dump可以保留,但记得上线前注释或删除 var_dump($mine); global $db; // 在这里编写你的数据库操作逻辑,比如: // $query = "SELECT * FROM some_table WHERE ward = " . $db->qstr($mine); // $result = $db->Execute($query); // 如果需要给one函数返回处理结果,添加return语句即可 return $mine; }
关键逻辑说明
- 变量传递的核心:你原本的传递逻辑是正确的——在
one里调用two($get_ward),就已经把$get_ward的值传递给了two的$mine参数。 - 空值与异常处理:增加了
$get_ward的初始化和非空判断,同时检查查询是否成功,避免出现未定义变量或无效查询导致的错误。 - 移除终止语句:去掉
two里的die;,让后续的业务代码可以正常执行。
内容的提问来源于stack exchange,提问作者Jorge
相关产品推荐
相关产品推荐

