• 締切済み

PHP コードイグナイターのDBライブラリについて

テーブル名 image id | user_id| category | view 1 | 1 | 1 | 0 2 | 1 | 1 | 1 3 | 2 | 1 | 0 4 | 2 | 1 | 1 テーブル名 favorite(お気に入り) id | user_id | favorite_id 1 3 1 user_id が 3 の人が category を 1と検索すると、category が 1 且つ view が 0 と、category が 1 且つ user_id が 1 である 1, 2, 4 の id を抽出したいのですがコードイグナイターのDBライブラリでのやり方がわかりません。 (category == 1 && view == 1) || (category == 1 && user_id == 1) というような表現をしたいのですがお詳しい方、お教えください。 よろしくお願いします。

  • PHP
  • 回答数1
  • ありがとう数0

みんなの回答

  • 1minn
  • ベストアンサー率57% (52/90)
回答No.1

どっちかというとSQLがわからないって話でしょうか? 例として提示しているテーブルと条件を照らし合わせても求めている結果にはならないと思うのですが? 抽出したいidというのはどちらのテーブルですか? idが外部キーには見えませんが・・・ ・user_id が 3 の人 これはfavoriteテーブルですか? ・category を 1と検索すると これはimageテーブルを結合した場合? ・category が 1 且つ view が 0 imageテーブルでこの条件だと、結果は1,3の二つ ・category が 1 且つ user_id が 1 imageテーブルでこの条件だと、結果は1ひとつ ・である 1, 2, 4 の id を抽出したい id=4はどこに出てきませんが・・・ > コードイグナイターのDBライブラリでのやり方がわかりません。 一応上記の部分に回答するならこれだけです。 $this->db->query("SQL文"); なにかいろいろと間違ってるように思えますが・・・ 問題を整理してみては?

関連するQ&A

  • 人気記事(ランキング)表示に関するDB設計や方法

    DBのテーブル設計と実装について教えて頂けると嬉しいです。 登録制サイトで、記事を投稿して閲覧者がお気に入りに登録できるような仕組みを作っています。 トップページ等で「人気の記事」を表示する際、お気に入り登録数が多いものを表示させたいと思っています。 このような場合、どのようなテーブル設計や方法を取るのが良いのでしょうか? 3つ方法を思いつきますが、どれも一長一短なのかなという気がしています。 (テーブル設計の例)  「posts」テーブル  : post_id, user_id, text  「favorites」テーブル: favorites_id, user_id, post_id  「users」テーブル  : user_id, user_name (方法1)お気に入り登録数をテーブルに持たない(都度カウント処理する) トップページ表示の都度、「favorites」各記事のお気に入り登録数をカウントして(post_id で group byしてcountする)、登録の多い記事を表示させます。シンプルな方法ですが、レコード数が多い場合の負荷を心配しています。 (方法2)お気に入り登録数をテーブルに持つ お気に入り登録数を「posts」テーブル内に保持させます。  「posts」テーブル  : post_id, user_id, text, favorite_count 閲覧者がお気に入り登録した場合は「favorites」テーブルへの追加を行うと供に「posts」テーブルの「favorite_count」を更新します。トップページ表示の際は「posts」テーブルの「favorites_count」を見に行って多いものを表示させるだけなので負荷の心配は減ります。しかし、冗長な?データをテーブルに持つのは何か嫌な気がしますし、またプログラム実装が少し困難になります。 (方法3)人気の記事テーブルを別に持つ バッチ処理を1日1回等走らせ、登録数の多い記事をサーチして「人気の記事」テーブルに格納します。トップページでは、この「人気の記事」テーブルを見に行って表示させるだけになりますので負荷が減ります。しかし、リアルタイムな情報を表示できないのが残念です。 環境は、MySQL5.1、PHP5.2.17 となります。 アドバイス等頂けましたら嬉しいです。

  • DBにphp画像格納

    画像保存用ソース if($_FILES['imagefile']['error']) exit;$mime = $_FILES['imagefile']['type'];//mime type$path = $_FILES['imagefile']['tmp_name'];//uploaded fileif($mime=='image/pjpeg') $mime='image/jpeg';if($mime=='image/x-png') $mime='image/png';if(is_uploaded_file($path)){$mime = addslashes($mime);$data = addslashes(file_get_contents($path));//一時ファイルの読み込み$sql = "insert into image_table (mime,data) values ('$mime','$data')";$db->query($sql);//略記} 表示用ソース //image.php$id = intval($_GET['id']);$sql = "select * from image_table where id=$id";if($image = $db->findone($sql))//1レコード取得(略記){header("Content-type: ".$image['mime']);echo stripslashes($image['data']);} それぞれ、どこを変更して記述する必要がありますか?? DB名sample テーブル名dbdb パスワードhogehogeと仮定した場合。

    • 締切済み
    • PHP
  • 2つの同じDBの比較について

    Oracle8iにて1つのDBに2人のユーザを作成し、同じテーブル構成に同じデータをimportしています。これから2つの環境にてそれぞれテストを行うのですが(あるアプリケーションを動かします)、1日の終わりにこの2人のユーザのテーブルを比較したいと考えています。各ユーザのテーブルは100個あるのですが、これらを比較する方法はありますか? 思い付くのはお互いのユーザの各テーブルをselectで抽出してMIFES(テキストツール)で比較なんてのしか思い付かなくて・・・ 是非簡単な方法があればご教授よろしくお願いします。

  • DB設計について

    ユーザー情報などで、チェックボックスで複数選択してもらった項目を DBへ登録する場合どのように、テーブルを作るのが良いのでしょうか? 例えば、一つのフィールドに、選択してもらった項目を user_id hoby 1    'サッカー,野球,バスケ' などと入れるのがいいのか、 別の、テーブルを作って、 user_id hoby 1    サッカー 1    野球 1    バスケ この方がよいのか、どちらがよいのでしょうか、よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • phpのコードでうまく動かず困っています

    現在ある書籍でログイン機能の基礎を学んでいるのですが、エラーが出て困っています。 書籍内のコードや付属のサンプルファイルの物をいれたり確認したりするのですがエラーがでます。 エラー Fatal error: Call to a member function bindParam() on a non-object in C:\xampp\htdocs\tennis\login.php on line 15 (この15行目は〇の部分です) コード <?php session_start(); //セッション開始 if(isset($_SESSION['id'])){ //セッションにユーザーIDがある(ログインしている) header('Location:index.php'); }else if(isset($_POST['name']) && isset($_POST['password'])){ $dsn = 'mysql:host=localhost; dbname=tennis; charset=utf8'; $user ='tennisuser'; $password = 'password'; try{ $db = new PDO($dsn, $user, $password); $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $stmt = $db->prepare("SELECT * FROM users WHERE name=:name AND password=:pass"); ○$stmt->bindParam(':name', $_POST['name'], PDO::PARAM_STR); $stmt->bindParam(':pass', sha1($_POST['password']), PDO::PARAM_STR); //クエリ実行 $stmt->execute(); if($row = $stmt->fetch()){ //ユーザーが存在していたので、セッションにユーザーIDをセット $_SESSION['id'] = $row['id']; header('Location:index.php'); exit(); }else{ //1レコードも取得できなかった場合 //ユーザー名・パスワードは間違っている可能性があるのでもう一度ログインフォームを表示 header('Location:login.php'); exit(); } }catch(PDOException $e){ die('エラー:'.$e->getMessage()); } }else{ //ログインしていない場合はログインフォームを表示 ?> <html> ~省略~

    • ベストアンサー
    • PHP
  • Cakephpでランキング機能の作成方法について。

    Cakephpでランキング機能の作成方法について。 Cakephpで、お気に入り数順のランキング機能を作りたいと考えています。 以下のような構造でランキングを表示させたいのですが、 やり方が分からず困っています。 ■システム概要 コーヒーの紹介サイトです。 様々なコーヒーが登録されており、ユーザーは任意のコーヒーをお気に入り登録できます。 Coffeeテーブル id , name Userテーブル id , name Favoriteテーブル id , coffee_id , user_id 現在、ランキングを表示させたいページであるindex.ctpには、$this->Coffee->find();でCoffeeの情報を表示させています。 アソシエーションでUserテーブル、Favoriteテーブルの情報も取れていますが、これをお気に入り数順にソートするやり方がわかりません。宜しくお願いします。

    • ベストアンサー
    • PHP
  • 他のDBのオブジェクトの利用

    同一スキーマ上の別のDBのテーブルを使ってビューを作成したり ストアドを作成したりする事は可能でしょうか? また、アクセスから接続しているDB以外のDBのテーブルに フォームやVBAからアクセスする事は可能でしょうか? (要は、アクセスのMDBのリンクテーブルの接続先が複数ある様な イメージです) やりたい事はアクセスの請求書発行システムのFORMから 取引先管理システムの取引先テーブルを参照したり、SQLの 請求書発行DBのビューやストアドで取引先管理DBのテーブルを 参照しいたいのです。

  • 大変困っております。PHP DBにお詳しい方宜しく御願致します。

    初歩的なことかもしれません。 御助言頂きたいと思いご質問させて頂きます。 ポイントサイトを構築している途中で会員さんのポイント獲得ランキングを昇降順にDBより抽出しようと試みましたが無理でした。 こちらのソースからの後の記述が分かりません。 SELECT * FROM $k_user_table order by point DESC 結局分からぬまま最終的に以下の様にすることが精一杯でした。 ---------------------- <?php $point_count = $DB->getone("SELECT * FROM $k_user_table order by point DESC"); print $point_count; ?> ---------------------- この形でもやはり1件の獲得ポイントのみが出たり或いは一桁のちょっと訳が分からない数字が出たりします。 ポイントの高い順に10位まで表示したいと思っております。 テーブル名はこちらSELECT * FROM $k_user_table order by point DESCで間違いないはずなんですけどDBへの接続等その後のWHERE・=・<・>・等の記述方法の(~の場合~にする)の様な定義付けが分かりません。 先輩方の御助言頂けますでしょうか。 宜しく御願致します。

    • ベストアンサー
    • PHP
  • 簡易DBでリンクをクリックすると表のデータを絞込みたい

    JavaScriptだけで簡単なDB機能を使おうとしています。 FAQを作っていて、質問の内容によっていくつかのカテゴリに分類し、デフォルトでは全Q&Aをtable表示し、カテゴリ名(テキストリンク)をクリックすると、カテゴリに該当するQ&Aだけに絞り込んで表示するというものです。 いろいろなサイトを検索して、以下のような方法を見つけました。 ------------------------------ db = new Array; db[0]="番号,日付,質問,回答"; db[1]="001,2007/6/1,質問1,回答1"; db[2]="002,2007/6/2,質問2,回答2"; (同様に続く) ------------------------------ このようなDBがあり、ページ上の検索語入力欄に検索語を入れてボタンを押すと、dbの中で一致する語を含むものを、table化して表示するものです。 ※情報元:http://www.imymode.com/exp/js04.html この「検索語入力」を「テキストリンクをクリック」に変えて照合する方法をご存知の方はお教え頂けませんでしょうか。 質問カテゴリ名のテキストリンク(15件の予定)は、aタグにidを付与し、そのid名とdb内の文字列を照合するような形でできないかと思っています。従って、 db[1]="001,2007/6/1,質問1,回答1,id名"; のように、db側には質問が属するカテゴリのidも入れ、table化の際はid部分だけは表示しない、といった処理もできればと思っています。 説明足らずで申し訳ありませんが、宜しくお願い申し上げます。

  • db2setupでdb2inst1が作成されない

    お世話になります。 redhat9にDB2ver8を導入しようとしています。 db2setupを実行しGUIインストールを行いました。 しかし、セットアップ完了画面でなぜかdb2inst1だけ作成されておらず、db2start等のコマンドができません。新しくdb2inst1とdb2grpを作成して、再度インストールを実行してもうまくいきません。 色々調べてみたのですが、いまいちよい事例が見つからないので、質問させていただきますので、よろしくお願いします。 以下に失敗していると思われるログを抜粋します。 DB2 ファイル・セットのインストール:.......成功 DB2 ライセンスの登録:.......成功 デフォルト・グローバル・プロファイル・レジストリー変数の設定:.......成功 DB2 Administration Server の作成:.......成功 エラー:現在の DB2INSTANCE を "db2inst1" に切り替えることができませんでした。戻りコードは "-2029059916" です。 インスタンス・リストの初期化:.......成功 DB2 インスタンス構成のカスタマイズ:.......成功 エラー:DBI1131E ユーザー ID db2inst1 が無効です。 説明: 与えられたユーザー ID にアクセスしようとして失敗しました。 次の状態のいずれかが発生していると考えられます。 o このユーザー ID がシステムにない。 o このユーザーのホーム・ディレクトリーが正しく設定されていない。 o DB2 で必要なユーザー属性のいずれかが設定されていない。 o このユーザーの UID が 0 である。