2013-10-06 50 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