簡體   English   中英

mysql選擇數組中的位置(php,mysql)

[英]mysql select where in array (php, mysql)

可以說我在mysql行中有一個數組:

a:3:{i:1;a:3:{i:0;s:1:"1";i:1;s:1:"3";i:2;s:1:"5";}i:4;a:3:{i:0;s:2:"21";i:1;s:2:"25";i:2;s:2:"29";}i:5;a:1:{i:0;s:2:"33";}}

看起來像這樣:

Array
(
    [1] => Array
        (
            [0] => 1
            [1] => 3
            [2] => 5
        )

    [4] => Array
        (
            [0] => 21
            [1] => 25
            [2] => 29
        )

    [5] => Array
        (
            [0] => 33
        )

)

現在,我通過_GET傳遞數組,我想打印出在我的mysql和傳遞的數組中包含相同值的所有行。 例如,如果我傳遞此數組:

    Array
    (
        [1] => Array
            (
                [0] => 5
            )
)

應該顯示一個結果,因為傳遞的數組包含選項5。我試圖這樣做:

$pecul = serialize($array);
$q=mysql_query("SELECT id from table WHERE options like '%$pecul%'")or die(mysql_error());

但它只會打印出具有相同數組的結果。

like運算符match僅匹配相同的dem ,它不理解,例如您在dem中輸入like,否則它也會顯示demolish

我認為為此,您需要先取消序列化,然后通過loop或in_array()函數通過php查找

%like%所做的假設這是表Persons ,您使用了查詢

SELECT * FROM Persons WHERE City LIKE '%tav%'

+-------------+-------------+
|   id        |  city       |
+-------------+-------------+
|   1         |   Sandnes   |        
+-------------+-------------+
|   2         |   Stavanger |
+-------------+-------------+

所以結果將是

+-------------+-------------+
|   id        |  city       |
+-------------+-------------+
|   2         |   Stavanger |  <----it has tav (s-tav-anger)
+-------------+-------------+

您可能想先對數據庫中的數據進行反序列化。 將其放入PHP數組后,您可以檢查這些選項,因此請說:

if(in_array("5",$array)) {
  $q=mysql_query("SELECT id from table WHERE options=5")or die(mysql_error());
}

如果您需要查詢所有選項,則可以執行如下循環:

foreach($array as $option) {
  $q=mysql_query("SELECT id from table WHERE options='$option'")or die(mysql_error());
}

但是,就像馬里奧所說,您可能想考慮選項機制,也許串行數據不是您所需要的。 希望它可以照原樣為您工作。

IN()檢查一個值是否在一組值內

mysql> SELECT 2 IN (0,3,5,7);
        -> 0
mysql> SELECT 'wefwf' IN ('wee','wefwf','weg');
        -> 1

SELECT val1 FROM tbl1 WHERE val1 IN (1,2,'a');

查看:IN MySql

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM