在执行php请求时,如何传递多参数字符串


How do I pass a multiparameter string when doing a php request

如果我想从我的php Web服务中获取值,该服务连接到具有多值字符串的mysql数据库。。。例如,我应该如何在url中写它。

我想要什么:

login?next=initial_page?email=(1,2,3)

如果Web服务看起来像这样:

select * from login where email in (('".$_GET["email"]."'))

有没有可能,或者有没有更好的方法,比如说我会发送一个数组,然后我将如何编写php-webservice?

1)如果值是integer,则以这种方式传递

login?next=initial_page&email=1,2,3
                       ^ // here it should be & not ?

查询将是

$sql = "select * from login where email in (".$_GET["email"].")";

注意:在将字符串嵌入查询之前对其进行转义,以防止SQL injection

2)另一种方法是,您可以以JSON格式发布数据,并在PHP结束时使用json_decode解码该数据并在查询中使用它。

在每个输入之间使用&字符,如下所示:

login.php?next=initial_page&email=(1,2,3)

如果需要,你可以稍后这样拆分:

<?php
    // url= test.php?inputs=1,2,3
    $myVar=$_GET['inputs'];
    print_r($myVar);
    $myArray=explode(',', $myVar);
    print_r($myArray);
?>

像这样尝试

要么是数字(1,2,3,…)

或(aaa@domain.com,bbb@domain.com,ccc@domain.com,…)

除了('1','2','3')和('aaa@domain.com','bbb@domain.com','ccc@domain.com')

网址:

login?next=initial_page&email=1,2,3
or 
login?next=initial_page&email=aaa@domain.com,bbb@domain.com,ccc@domain.com
                       ^ //it should be &

在类似的php文件中获取

$email = $_GET['email'];
$email_array = explode(",",$email);
$email = implode("','",$email_array);
select * from login where email in ('$email')