2013-10-06 51 views
0
MYSQL聲明

所以,我有以下MySQL的聲明保存到一個數組:與數組變量

$sql = "SELECT did FROM did WHERE id = '$did_id'"; 
$result = mysqli_query($link, $sql, MYSQLI_STORE_RESULT); 
    while($row = $result->fetch_row()){ 
     $did[] = $row; 
     } 

這部分的偉大工程。但現在我需要獲取$ did數組中的值,並使用其中的值執行另一次查找。它的工作方式是我們將用戶分配給某些確定的用戶。因此,我發現用戶被分配到的是did($ did數組),並且僅基於那些值顯示了來自另一個表的結果。我不知道這部分如何工作,但這是我的下一個聲明需要做的:

SELECT * FROM log WHERE did_id = "the values in $did array" 

希望有人可以幫忙。對此,我真的非常感激。我還沒有真正能夠找到任何東西。

+0

**警告**您的代碼容易受到sql注入攻擊! –

+0

mysql不知道php的數組是什麼,因爲它只能用字符串操作。所以嘗試谷歌關於MySQL(實際上是ANSI)SQL IN ^運營商 – zerkms

+2

@丹尼爾答:白色:**警告**你的短語只不過是一個** GUESS ** – zerkms

回答

0

您可以使用PHP的join與MySQL的IN使逗號分隔字符串,你也可以使用implodejoin()implode()的別名;

SELECT * FROM log WHERE did_id IN(".join(',',$did).") 

這裏有一點要提到你$did應該包含方式ID,如

array("1","2","3"....) 

所以在循環抓取保存did列值

$did[] = $row[0]; 

注意第一個索引:我假設did,did_id類型是intbigint

+0

如果'$ did'不是一個數字類型 - 您需要添加引號,並以某種方式清理數據(使用類似「mysqli :: real_escape_string」的數據),如果它是字符類的。否則,它會在語法上不正確或者存在安全漏洞。 – zerkms

+0

我假設'did'類型是int或者bigint –

+0

無論如何你需要澄清一下。如果你的假設是錯誤的 - 你做了一個糟糕的工作的OP – zerkms