2013-06-27 58 views
2

所以我发现当使用db2时,sql是在一个php函数内部的,它不会返回任何值。php函数导致sql查询失败

它未能对DB2_PREPARE($conn, $sql2);

在哪里,如果你它的工作完全正常,并返回所有结果的功能之外执行该代码。

代码:

 function getRooms(){ 
      $sql2 = ("SELECT * FROM WS_ASSETS_rooms"); 
        $stmt2 = db2_prepare($conn, $sql2); 
        if ($stmt2) { 
          $result2 = db2_execute($stmt2); 
          if (!$result2) { 
            return "exec errormsg: " .db2_stmt_errormsg($stmt2); 
          } 

          while ($row = db2_fetch_array($stmt2)) { 
            echo "$row[1]"; 
          } 
        } else { 
          return "exec errormsg: " .db2_stmt_errormsg($stmt2); 
        } 
}; 
    echo getRooms(); 

这将返回"exec errormsg:"并没有错误。

+0

其中$康恩定义和分配?是否在函数 –

+0

的范围内检查,我认为,'db2_prepare'函数或'$ conn'没有在函数中作用域。 – JazyK

+0

谢谢,$ conn不在范围之内。不相信我错过了! – Austin

回答

2

$conn不在范围内。您必须将变量传递给该函数(推荐)或使用关键字global

传递变量

function getRooms($conn){ 
    // ... 
} 

echo getRooms($conn); 

使用全局

function getRooms(){ 
    global $conn; 
    // ... 
} 

echo getRooms();