Php 如何在数据库中使用数组选择mysql

Php 如何在数据库中使用数组选择mysql,php,mysql,sql,Php,Mysql,Sql,我在数据库中有这样一个数组: Field : smt_id Value in database : 261, 323 type : varchar(100) SELECT first_name FROM AT_members WHERE member_id IN ('261', '323') smt\U id不是固定字段。如果我更新为3个数组,它将像下面这样:261323111和变量$mid将更改为261323111 现在我想使用这个变量来执行类似这样的sql语句 $

我在数据库中有这样一个数组:

    Field : smt_id
    Value in database : 261, 323
    type : varchar(100)
SELECT first_name FROM AT_members WHERE member_id IN ('261', '323')
smt\U id不是固定字段。如果我更新为3个数组,它将像下面这样:261323111和变量$mid将更改为261323111

现在我想使用这个变量来执行类似这样的sql语句

$mid=261323

$sql = "SELECT first_name FROM ".TABLE_PREFIX."members WHERE member_id ='$mid'";
$result = mysql_query($sql,$db);
当我打印sql时,结果如下所示:

SELECT first_name FROM AT_members WHERE member_id ='261, 323'
John 
Merry
我的问题是,我如何改变sql,使其变成这样:

    Field : smt_id
    Value in database : 261, 323
    type : varchar(100)
SELECT first_name FROM AT_members WHERE member_id IN ('261', '323')
我怎样才能让每个结果都像这样中断:

SELECT first_name FROM AT_members WHERE member_id ='261, 323'
John 
Merry

断言
$mid
是一个数组:

'WHERE member_id IN ('.implode(',', $mid).')'

如果数组只有一个值,它也可以工作


提醒一下,这样的代码很容易受到SQL注入的攻击。

停止使用mysql扩展 它已被弃用。改用mysqli或PDO(sql注入警报)。此外,不要将变量直接推送到查询中,请使用准备好的语句。检查。 双格拉斯的答案很好地解释了内爆。对于你的第二个问题,如果你想要每个结果一个接一个,你应该一个接一个地获取它们。对于mysqli扩展,fetch_assoc在这里很好

fetch_assoc的简单用法:

if ($result = $mysqli->query($query)) {

        /* fetch associative array */
        while ($row = $result->fetch_assoc()) {
            printf ("%s (%s)\n", $row["column1"], $row["column2"]);
        }

总是只有两个用逗号分隔的值?varchar数据类型?否我将数据库作为一个数组插入,以便它可以更新两次以上smt_id列的数据类型是什么?假设此
$mid=261323
是您的实际代码,您需要执行
$mid=array('261',323')然后在阵列上分解。这也可能是内爆,甚至是数组()中的
。有很多方法可以做到这一点,但你可以大致了解;)是的,从数组中创建带有所需分隔符的字符串是不可能的。您的代码正常,但没有行返回。。MySQL返回了一个空的结果集(即零行),因为变量$mid不是数组,如果$mid是一个类似于
'261323'
的字符串,则最有可能是一个字符串,您做错了什么。hurmm。。大概因为当我回显时,它将是ex:123234。。。如何更改“261323”不要混淆PHP类型和MySQL类型。有两个不同的世界。然后,您应该使用它进行调试。在这里,您可能会看到您的变量是一个字符串。所以就这样说:
'WHERE IN('.$mid.')
。但是这是脏的,$MID应该是一个数组,考虑一下你前面的代码。实际上,运行查询(在SQL Server上完成)然后获取结果(按你想要的速度,消耗网络流量)是2个不同的操作。这个答案并没有回答OPs问题,也没有显示正确的多参数绑定。如果没有提供实际的答案,请考虑一个评论。我如何使每个结果都像这样中断:这是当前情况的最佳方法,因为$MID在被提供给SQL查询之前在一个单独的步骤中被标准化。但是$mid应该是一个数组,而不是在最后一刻;)