PHP はデータベース上で動作します。 1対多のテーブル挿入

WBOY
リリース: 2016-06-23 14:02:07
オリジナル
1225 人が閲覧しました

public function add($u_id, $name, $big_classes){  if(!self::$object)  {    return 102;  }  $sql = 'insert classes (cl_big_classes, cl_name) value ('.$big_classes.', \''.$name.'\')';  $this->sql->query($sql);  if($this->sql->affected_rows <= 0)  {    return 220;  }  $last_id = $this->sql->insert_id;  if($last_id)  {    $sql = 'insert u_cl_link (u_id, cl_id) value ('.$u_id.', '.$last_id.')';    //这句很明显的不是上一句的操作结果,是最上一句的结果。 最后的结果是返回0,表示一切正常,但数据库最后只插入了第一条。第二条完全没有执行过,求解决方法    if($this->sql->affected_rows <= 0)     {      return 222;    }    return 0;  }}
ログイン後にコピー


解決策を探しています。理論的には、2 つのクエリを別々に実行することになります。2 番目の文は実行されません。しかし、2 番目の文の挿入操作は成功しませんでした。2 番目の文の $sql をコマンド ラインにコピーして実行したところ、ここには理解できないメカニズムが存在する可能性があります。アドバイスをお願いします


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

でも、私にはそれが見えませんでした
$sql = 'insert u_cl_link (u_id, cl_id) value ('.$u_id.', '. $last_id .')';
$sql はどこで実行されますか?

しかし、それは見つかりませんでした
$sql = 'insert u_cl_link (u_id, cl_id) value ('.$u_id.', '.$last_id. ')' ;
$sql はどこで実行されていますか?
すぐにスレッドを閉じて非表示にします。これはまた恥ずかしいことです。ずっと調べてみたら、
$this->sql->query($sql);
を書いていないことが分かりました。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート