Home >Backend Development >PHP Tutorial >关于dedecms织梦中的$dsql的问题

关于dedecms织梦中的$dsql的问题

WBOY
WBOYOriginal
2016-06-23 13:01:051243browse

刚刚在写代码的时候,遇到一个奇怪的问题。
我想在图片上传成功后,向表uploads中插入一条记录。
那么问题来了,我新了一个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中的 include\enums.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;}

现在感觉不是include_one的问题,如果这个有问题的话,
$cuserLogin->getUserID(); 就会不对了。所以我感觉应当还是global $dsql; 没作用。
导致$dsql->ExecuteNoneQuery($inquery); 没执行插表操作。请求大家的指点。

有人知道么,求指教。。

我这边没有织梦  你可以写一条查询语句试试,global $dsql;有用没用

问题解决了,原因就是不能放在函数里面。把代码拿出来就行了。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn