ホームページ  >  記事  >  バックエンド開発  >  以下のメソッドで戻り値が取得できないのはなぜでしょうか?

以下のメソッドで戻り値が取得できないのはなぜでしょうか?

WBOY
WBOYオリジナル
2016-06-23 14:11:55930ブラウズ

この投稿は 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); の値が返されます
次のようになります:は成功し、return が空であると言ったので、明らかにクエリは失敗しました

$ret = self::$db->query($sql, $unbuffered); 戻り値は 1 です。データベースのデータが返されたことがわかります。正常に挿入され、

となり、以下の判定は echo をパスします 挿入された ID も返されますが、最終的には空の文字列が返されます

プログラムの追加説明

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);  }

By public function query($sql, $unbuffered = false) { ...

またはクエリがリソースを返すか、クエリが論理値を返すことがわかります

どのような SQL を実行していますか?クエリ実行時の $unbuffered とは何ですか?

public function query($sql, $unbuffered = false) { ...

クエリがリソースを返すか、クエリが論理値を返すかのどちらかであることがわかります

これは $ret = self::$db-> です;query($sql , $unbuffered);
戻り値 echo は 1 で、これは SQL が正常に実行されたことも示しています。

elseif を使用すると、特定の条件によって以下のプログラムが中断されると、プログラムは続行されなくなります

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