如何使用PHP从不同的行获取相同的值

时间:2016-04-12 09:01:31

标签: php mysql

我有一个数据库和1个table.table名称是:cranetype他们有4个字段(cf_did,cf_firstname,cf_comment,cf_cranetype)。

以下数据库值。

cf_did  cf_firstname cf_comment   cf_cranetype 

1       Alexy         tfhgfnjh       2,3    
2       Thomas        fdghfgh       11,6,3  
3       Thomas         cgjkjhl      5,6,11,3        
4       Thomasxc       cgjkjhl      1,6,9,4         
5       Thomaseg       fdghgh       11,12,3     
6       Thomasm        fsgdfgbd     11,6,3  
7       Thomabs        dgtrty       7,9,11  
8       Rdgfghfdg      bfdhh        1,3,4   
9       Gngfdytyt      eertret      1,6,3   
10      Dvbgfj         hfdhhyrtyr   6,3     
11      Hnfhghyt       bfgfdhg      11,6,3  
12      Adgfdyh      dfsdtrst        1  
13      Rida       gfhgfjgh         3,7,68  

我有一个选择框,它们的值为(1,2,3,4,...)。 如果我从选择框中选择值1。

我想检查数据库表(cranetype)字段cf_cranetype

例如:

$sql= mysql_query("SELECT * FROM `cranetype` WHERE `cf_cranetype`='1'");
while($row=mysql_fetch_array($sql))
{
    <?Php echo $row['cf_did'];?>
}

我想要这样的输出:

if cf_cranetype =1.
4,8,9,12. (these are cf_did)

我的代码是:

$cranetype = $_POST['cranetype'];
$words = explode(',', $cranetype);
if (strlen($cranetype) > 0) {
    $Where = '';
    foreach ($words as $Item) {
        $Where = "cf_cranetype LIKE '%$Item%' AND";
    } 
    $Where = substr($Where, 0, -4);
    $list_ul = "(SELECT * FROM cf_directory` WHERE $Where)";
    $query = mysql_query($list_ul) or die(mysql_error());
}

3 个答案:

答案 0 :(得分:2)

解决方案正在使用SELECT GROUP_CONCAT(cf_did) as cf_dids FROM `cranetype` WHERE FIND_IN_SET('1', `cf_cranetype`) > 0; create table cranetype(cf_did int, cf_firstname varchar(100), cf_comment varchar(100), cf_cranetype varchar(50)); insert into cranetype values (4, 'Thomasxc', 'cgjkjhl', '1,6,9,4'), (7, 'Thomabs', 'dgtrty', '7,9,11'), (8, 'Rdgfghfdg', 'bfdhh', '1,3,4'), (9, 'Gngfdytyt', 'eertret', '1,6,3'), (12, 'Adgfdyh', 'dfsdtrst', '1'); SELECT GROUP_CONCAT(cf_did) as cf_dids FROM `cranetype` WHERE FIND_IN_SET('1', `cf_cranetype`) > 0;

mysql> SELECT GROUP_CONCAT(cf_did) as cf_dids
    -> FROM `cranetype`
    -> WHERE FIND_IN_SET('1', `cf_cranetype`) > 0;
+----------+
| cf_dids  |
+----------+
| 4,8,9,12 |
+----------+
1 row in set (0.00 sec)

演示:

<TextBox x:Name="SomeProperty" Text="{Binding SomeProperty}" />

输出:

this.Bind(ViewModel, vm.SomeProperty, v => v.SomeProperty.Text);

答案 1 :(得分:0)

在mysql中使用Find_in_set()。

SELECT * FROM cranetype WHERE FIND_IN_SET ('1',cf_cranetype);

答案 2 :(得分:0)

您需要使用FIND_IN_SET。请查看链接以获取更多说明。 这里你的查询是

<强> SELECT * FROM cranetype WHERE FIND_IN_SET ('1',cf_cranetype); enter image description here