Home  >  Article  >  Backend Development  >  求问以下方法为何不能得到返回值?

求问以下方法为何不能得到返回值?

WBOY
WBOYOriginal
2016-06-23 14:11:55825browse

本帖最后由 u010416883 于 2013-06-01 11:37:22 编辑

由解,以下疑问!
public static function query($sql, $unbuffered = false) {    $ret = self::$db->query($sql, $unbuffered);//该句成功时$ret为1  注::self::$db->query为mysql_query    if ($unbuffered===true) {      $cmd = trim(strtoupper(substr($sql, 0, strpos($sql, ' '))));      if ($cmd === 'SELECT') { }       elseif ($cmd === 'UPDATE' || $cmd === 'DELETE') {          $ret = self::$db->affected_rows();      }       elseif ($cmd === 'INSERT') {          $ret = self::$db->insert_id();//该处运行时证明执行了,返回的是int类型id号      }   }   return $ret;//最终返回不是int类型id号}       

回复讨论(解决方案)

那你得到的是什么?

空字符串!!!!!

无论是否有后续操作,至少会返回 $ret = self::$db->query($sql, $unbuffered); 的值
既然是:该句成功时$ret为1,而你说返回为空,显然是查询失败了

$ret = self::$db->query($sql, $unbuffered); 这返回是1,看数据库数据也正常插入了,
并且下面的判断通过echo也返回了插入的的id,但最后的return返回的是空字符串

补充程序说明一下

self::$db->query($sql, $unbuffered);方法如下    public function query($sql, $unbuffered = false) {            $func = $unbuffered ? 'mysql_unbuffered_query' : 'mysql_query';            $query = $func($sql, $this->curlink);            $this->querynum++;            return $query;    }  self::$db->insert_id();方法如下function insert_id() {return ($id = mysql_insert_id($this->curlink)) >= 0 ? $id : @mysql_result($this->query("SELECT last_insert_id()"), false);  }

由 public function query($sql, $unbuffered = false) { ... 可知
要么 query 返回资源,要么 query 返回逻辑值

你执行的sql是什么?执行query时,$unbuffered是什么?

由 public function query($sql, $unbuffered = false) { ... 可知
要么 query 返回资源,要么 query 返回逻辑值

这个是$ret = self::$db->query($sql, $unbuffered);
返回值echo为1,也说明sql执行成功!

你用elseif  如果某个条件断了下面的程序就不会再走

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