2011-10-10 88 views
0

每個VAL不能換我圍​​繞這一頭..運行存儲過程在陣列

我有兩個獨立的存儲過程,我們姑且稱之爲:

createTable (takes a varchar userID as input) 
runReport (takes two dates for input, as varchar) 

CREATETABLE創建一個稱爲虛擬表## tempTable(如果它不存在並添加提供的用戶ID)。所以如果我運行

EXEC createTable 'user-32' 
EXEC createTable 'user-33' 
EXEC createTable 'user-34' 

然後我在## tempTable中有這些ID。

之後,我想運行此:

EXEC runReport '2011-01-01', '2011-10-01' 

應該給我一個大大的美味輸出。 問題是,這個像這樣運行時,它完美的作品:

mssql_query("EXEC createTable 'user-32'"); 
mssql_query("EXEC createTable 'user-33'"); 
mssql_query("EXEC createTable 'user-34'"); 
mssql_query("EXEC runReport '2011-01-01', '2011-10-01'"); 

但是當我嘗試循環出CREATETABLE線的runReport-SP不返回任何數據。

例子:

$userIDs = explode(',', $userID_str); 
foreach ($userIDs as $user) { 
    if (mb_strlen($user) > 0) { 
    mssql_query("EXEC createTable '$user'"); 
    } 
} 

我想知道如果這可能有什麼關係斷開的連接還是什麼?似乎runReport-SP可以找到#tempTable,但是當我使用循環時它無法讀取它。

任何想法?

謝謝! :)

+0

'$ userID_str'是怎麼樣的? – Griwes

+0

這只是一個字符串,如下所示:user-31,user-32,user-33 – digi

+0

並確定'mb_strlen($ user)> 0'會評估爲TRUE? – shadyyx

回答

0

而且有關調用你的程序,這樣的內容:

$conn = mssql_connect(...); 
$stmt = mssql_init("createTable", $conn); 
foreach ($userIDs as $user) { 
    if(mb_strlen($user) > 0) { 
     mssql_bind($stmt, "@userID", &$user, SQLVARCHAR); 
     mssql_execute($stmt); 
    } 
} 

$stmt = mssql_init("runReport", $conn); 
mssql_bind($stmt, "@date1", "2011-01-01", SQLVARCHAR); 
mssql_bind($stmt, "@date2", "2011-01-01", SQLVARCHAR); 
$result = mssql_execute($stmt); 
print_r(mssql_fetch_array($result)); 

+0

工程就像一個魅力,謝謝! :) – digi

+0

沒有概率的人;-) – shadyyx