2016-09-10 24 views
0

私はSqlテーブルを持っています。以前に得られた値と同じものがあるかどうかを調べるためにはmembersカラムを検索する必要があります(例:76561198119598543)。同じ行のnameに格納された値を取得したいと考えています。特定の値を含む行を選択してください

以下のリンクは、表の外観とメンバー列の設定例です。私はPHPの人のあまりないんだけど、私は見つけることができるほとんどすべてを試してみました http://nbdcommunity.com/staffimages/example.png

... $gangsql = 'SELECT members, name, owner FROM 'gangs' WHERE owner LIKE "$playerid%"';(playeridている私はと比較したいよ値)

+0

これは、データベース構造の観点からしたいことを達成するためのひどい方法です。ピボットテーブルを調べるのが理想的です。 – Jono20201

+1

それは私が仕事をしなければならないことです。私はテーブルを編集することはできませんし、どのようにコンテンツを格納するように私は構成するためのアクセス権を持っていないゲームサーバーで動作します。 – Pred

+0

完全一致を探している場合、 'LIKE'は少し遅く/あいまいですが、なぜ「=」ではないのですか?データベースがその列に索引を持っている場合(それが有望であると思われる場合は、IDである場合は----)...変更されたクエリーを使用するとよいでしょう。SELECTメンバー、名前、所有者FROM 'gangs' WHERE owner = '$ playerid'''そしてもし '$ playerid'が"あなたのトラス境界の外の領域 "から来ることができたら...準備されたクエリを使うよりも、あなたのクエリにいくつかの文字列を補間しないでください...(ヒント)非常に創造的なSQLの修正「何でも」OR 1 = 1; DROP TABLEの所有者。 - ' – Dilettant

答えて

0

これは、値のように見えます列メンバーは数字ではなく文字列です。それはケースだと仮定すると、あなたは試すことができます:

SELECT name FROM gangs WHERE members LIKE '%76561198119598543%' 

これは、「メンバー」欄にはあなたがチェック番号が含まれているすべての行のために、「名前」の値を返します。

0

ここで私はあなたの問題について理解しています:
これは検索ボックスのようなものです。見たいデータが一致している場合は、それを表示しますか?

例:

PHPファイル

<?php 

    //Connection here 

    if isset($_POST["member"]){ 
    $get_data = $_POST["member"]; 
    //Display matched Data 
    $sql = mysql_query("SELECT * FROM table_name WHERE member = '$get_data' "); 
    while($row = mysql_fetch_array($sql)){ 
    //Declare variables 
    $this_name = $row["name"]; 

    //Display Variable 
    echo 
    'The name you are looking for is this person; on this case it\'s a number <u>'.$this_name.'</u>'; 

    } 
    //END WHILE LOOP 
    }else{ 
    //No match 

    echo ' 
    <script> 
    alert("Data has no match. Please try again"); 
    window.location= "php_page_name.php"; 
    </script> 
     '; 
    } 

    ?> 

HERE HTML

<form method="post" action=""> 
Search Member: 
<input type="text" name="member"> 
<input type="submit" value="Filter"> 
</form> 

・ホープ、このことができます。がんばろう!

+0

$ _POST値はどの場合でもエスケープする必要があります – Benjamin

0
$lastValue = "76561198119598543"; 

$c = new mysqli($server, $user, $password) or die("cant connect"); 

if($res = $c->query("SELECT name FROM table WHERE members='$lastValue'")){ 
    if($res->num_rows > 0){ 
    $resAssoc = $res->fetch_assoc(); 
    $name = $resAssoc["name"]; 
    } 
} else { 
    die($c->error); 
} 

$c->close(); 
関連する問題