2016-09-02 10 views
2

私が探しているものを説明する方法はわかりませんが、できる限りのことを説明します。データと相互参照のためのmySQLの検索

次の列名を持つmySQLデータベースがあります。|Name1|Name2|Name3これらは列名です。各列の下に名前|Mark Abc|Jim Abc|Kim Abcがあります。私はこのテーブルを更新するとき、|Mark Abc|Week-03|のようないくつかのデータを持っていたので、次の列|Name|Weeknum|と別のテーブルがあります。

私が持っている質問は、Name1の下の値を取り、nameとweeknumの名前を検索してthis-Week-01 Week-02 Completed Week-04のような値を返すPHPスクリプトを作成する方法です。

だから、基本的にすべての52週間の一覧を表示し、任意のは、それが事前にCompleted、感謝をリストしName|Weeknumと一致することが判明している場合

+0

[Inner join](http://www.mysqltutorial.org/mysql-inner-join.aspx)? – litelite

+0

'SELECT Weeknum FROM Table2 WHERE Name =? ' - それはどういう意味ですか? – David

+0

私はすべてのweeknumを検索し、すべての週番号をリストしたいので、 'Week-01〜Week-52'と' Name'に一致するWeeknumがあれば、そのWeeknumをCompletedに変更します – INOH

答えて

2

であると思いますID)とそれは外部キーとなりますので、あなたが求めていたことをするのは簡単です。なぜなら、すべての名前は独自のIDを持っているからです。

Table 1 

    ID NAME 
    1  Mark Abc 
    2  Jim Abc 
    3  Kim Abc 

    Table 2 

    ID Weeknum 
    1 Week-03 
    1 complete 
    3 Week-09 

は今、私はこのクエリを実行しようとしているとします:

" SELECT Weeknum FROM TABLE 2 WHERE id = 1; " 

これは私たちに、この出力を与える:

Weeknum 
Week-03 
complete 

何が起こったのMark ABCは= 1 IDを持っているし、我々は彼のidを検索した。

あなたがやった場合、私は、このクエリは仕事をする示唆するもの

私はあなたがすでにデータベースにリンクされていると私はちょうどあなたのクエリを与えると仮定します

:私は、クエリを入力するPDOを使用します。

$FetchInfo = $conn>prepare("SELECT Weeknum FROM TABLE 2 WHERE NAME = Mark Abc "); 
    $FetchInfo->execute(); 

    While($FI = $FetchInfo->FETCH(PDO::FETCH_ASSOC)) 
     { 
     echo $FI['weeknum']."\n"; 
     } 

トウ注:あなたは私はあなたがこれを簡単に行うことができます示唆ものを使用しない場合は、今

$FetchInfo = $conn>prepare("SELECT Weeknum FROM TABLE 2 WHERE id = 1"); 
$FetchInfo->execute(); 

While($FI = $FetchInfo->FETCH(PDO::FETCH_ASSOC)) 
    { 
    echo $FI['weeknum']."\n"; 
    } 

  • PDOを使用してクエリを入力して実行しましたが、何がわかっているのかわからない場合は、回答を編集してPDOコードをMysqliコードに置き換えることができます。危険よう

$FetchInfo = $conn>prepare("SELECT Weeknum FROM TABLE 2 WHERE id = 1"); $FetchInfo->execute();

そのを、それはSQLインジェクションのために開くことができます。ただ、将来のために

  • あなたはこれをしないクエリを入力したいとき。それは何ですか、それを修正する方法は?

    それはいただきました:

    SQLインジェクションは、極悪非道なSQL文をダンプするために、例えば(実行のための入力フィールドに を挿入された データ駆動型アプリケーションを、攻撃するために使用されるコードインジェクションの技術であり、データベース の内容を攻撃者に送信します)。この答えの例ではそれを修正する方法

    は、これを行うことである。

    $FetchInfo = $conn>prepare("SELECT Weeknum FROM TABLE 2 WHERE id = ?"); 
    $FetchInfo->execute(array(1)); 
    

    があまりにもこれを読んで:Prepared statements and stored procedures

    ・ホープこのヘルプます。

  • +0

    情報ありがとう、私は自分のコードをあなたのものに適応しようとします。ありがとう – INOH

    +0

    @INOHうん、問題ありません。もし助けが必要なら、 – Laith

    1

    私はコメントから収集することは、

    オフ線に沿って何かを意味していることです
    Update Table2 
    Set Weeknum='Completed' 
    Where Name='Mark Abc' 
    

    私は(あなたがidというフィールドを追加し、最初のテーブルのために、それは主にし、同じ名前を持つ第二のテーブルに別のフィールドを作成することができれば、私は好む、これはあなたが何を意味するか

    関連する問題