ホームページ  >  記事  >  バックエンド開発  >  dedecms Dreamweaver の $dsql に関する質問

dedecms Dreamweaver の $dsql に関する質問

WBOY
WBOYオリジナル
2016-06-23 13:01:051209ブラウズ

コードを書いているときに奇妙な問題に遭遇しました。
画像が正常にアップロードされた後、アップロードテーブルにレコードを挿入したいと考えています。
次に問題が発生します。新しい InsertUploadTbl 関数を作成しました

function InsertUploadTbl($sfilename,$sfullurl,$mediatype){    global $dsql;    echo '222xx--';    require_once(dirname(__FILE__)."/../../../../../common.inc.php");    require_once(dirname(__FILE__)."/../../../../../userlogin.class.php");    echo '333xx--';    //检验用户登录状态    $cuserLogin = new userLogin();    $nowtme = time();    $fsize = filesize($sfullurl);                                  $inquery = "INSERT INTO `#@__uploads`(arcid,title,url,mediatype,width,height,playtime,filesize,uptime,mid)       VALUES ('0','$sfilename','$sfullurl','$mediatype','0','0','0','{$fsize}','{$nowtme}','".$cuserLogin->getUserID()."'); ";    echo $inquery;    $dsql->ExecuteNoneQuery($inquery);    $fid = $dsql->GetLastID();    AddMyAddon($fid, $sfullurl);        }


FF デバッグを使用して次の結果を取得しました:


ルックアップ テーブルを確認したところ、新しいレコードが存在しないことがわかりました。それ。

しかし、このコードを関数に入れて関数の外で実行すると、成功し、新しいレコードがテーブルに追加されました。
関数内で global $dsql; が機能しない場合に皆さんに質問したいのですが、関数内で SQL ステートメントを正常に実行する方法はありますか?よろしくお願いします。数時間取り組んでいますが、まだわかりません。


ディスカッションに返信(解決策)

関数にファイルを含めることは許可されていません

はい。 。詳細については、dedecms の includeenums.func.php を参照してください。 。たとえば、

/** *  获取数据的JS代码(二级联动) * * @access    public * @param     string    $egroup   联动组 * @return    string */function GetEnumsJs($egroup){    global ${'em_'.$egroup.'s'};    include_once(DEDEDATA.'/enums/'.$egroup.'.php');    $jsCode = "<!--\r\n";    $jsCode .= "em_{$egroup}s=new Array();\r\n";    foreach(${'em_'.$egroup.'s'} as $k => $v)    {        // JS中将3级类目存放到第二个key中去        if (preg_match("#([0-9]{1,})\.([0-9]{1,})#", $k, $matchs))        {            $valKey = $matchs[1] + $matchs[2] / 1000;            $jsCode .= "em_{$egroup}s[{$valKey}]='$v';\r\n";        } else {             $jsCode .= "em_{$egroup}s[$k]='$v';\r\n";        }    }    $jsCode .= "-->";    return $jsCode;}

これで問題がある場合は、

$cuserLogin->getUserID(); が間違っていると思います。したがって、グローバル $dsql はまだ効果がないと感じます。
その結果、$dsql->ExecuteNoneQuery($inquery); はテーブル挿入操作を実行しませんでした。アドバイスを求めています。

知っている人はいますか? 。

ここには Dream Weaver がありません。グローバル $dsql を作成してみてください。これは役に立ちますか?

問題は解決されました。その理由は、関数内に配置できないことです。コードを取り出すだけです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。