簡體   English   中英

mysql_result轉換為sqlsrv

[英]mysql_result conversion to sqlsrv

我剛剛開始學習PHP,並且很難將mysql_result轉換為使用sqlsrv的內容。

我要轉換的代碼是:(已編輯以包括完整代碼)

 function database($querydb) {

global $global;
global $field;

if (isset($global['queries'])) {
    $global['queries']++;
} else {
    $global['queries'] = "1";
}
$field['queries'] = $global['queries'];
if (isset($global['query_log'])) {
    $global['query_log'] .= "\n<br>$querydb";
} else {
    $global['query_log'] = "$querydb";
}

$serverName = "XXX";
$uid = "XXX";
$pwd = "XXX";
$dbName = "XXX";


$connectionInfo = array("UID" => $uid, "PWD" => $pwd, "Database" => $dbName, "ReturnDatesAsStrings"=>true);

$conn = sqlsrv_connect($serverName, $connectionInfo);

$stmt = sqlsrv_query($conn, $querydb) or return_error("Query Error: $querydb");

    while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC) ) 
        {
        $global['dbresult'] = $row;
        }


if ((substr($querydb,0,6)!="INSERT") && (substr($querydb,0,6)!="UPDATE") && (substr($querydb,0,6)!="DELETE")) {

while ($row1 = sqlsrv_fetch_array($stmt))
{
$global['dbnumber'] = mysql_numrows($global['dbresult']);  // original $dbnumber
}

return;

}

function return_error($error) {
print $error;
exit;
}

function date_status($date, $username) {

global $global;
global $field;
global $input;
global $text;

$status = "0";

if ($username!="") {

    $query = "SELECT countedrow.total, id, start_date, end_date FROM calendar JOIN (SELECT total = COUNT(*) FROM oc_calendar) AS countedrow ON 1=1";

    database($query);


    for ($i = 0; $i < $global['dbnumber']; $i++) {

        $status = "1";

        $event_id = sqlsrv_fetch_array($global['dbresult'],$i,"id"); 


    }
}

return $status;

}

我嘗試了sqlsrv_get_field,sqlsrv_fetch,sqlsrv_fetch_array,但顯然語法不正確,並且由於出現以下錯誤而誤解了這一點:

sqlsrv_fetch_array()期望參數1為資源,數組在...中給出

...以我所做的一切。

如何從數組中提取ID以設置$ event_id? 我要去哪里錯了?

$querydb = "SELECT countedrow.total, id, start_date, end_date FROM oc_calendar JOIN (SELECT total = COUNT(*) FROM oc_calendar) AS countedrow ON 1=1";

$stmt = sqlsrv_query($conn, $querydb);

if( $stmt === false) {
    die( print_r( sqlsrv_errors(), true) );
}

while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
    $event_id = $row["id"];
}

這樣行嗎?

到底為什么在一段時間內將所有行分別映射到globalvar,然后再次循環全局var! 如果您需要將其從函數返回全局返回,則直接將其全部循環,然后將其作為返回數組而不是全局傳遞

您說您不知道如何為sqlsrv_fetch_array()提供有效的第一個參數,但是您的代碼已經正確地做到了:

$stmt = sqlsrv_query($conn, $querydb) or return_error("Query Error: $querydb");
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC) ) {
}

但隨后您迷失了自己的意大利面:

while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC) ) 
{
    $global['dbresult'] = $row;
}
$event_id = sqlsrv_fetch_array($global['dbresult'],$i,"id"); 

老實說,我建議您刪除此代碼並從頭開始。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM