php变量不起作用,但硬编码的数字会,为什么?

时间:2015-09-02 16:55:00

标签: php mysql

我的网址如下:website.com?id = 1,2

    $urlParam = $_GET['id']; 
    echo $urlParam;

$ urlParam按预期返回1,2。但是....我正在尝试用它来查询一个mysql数据库(我认为这是我正在做的正确的短语??)。这有效:

    $query->where(array(
       'id:IN' => array(1,2)
    ));

这不起作用:

    $query->where(array(
       'id:IN' => array($urlParam)
    ));

我不明白!为什么??另外......我几乎不知道自己在做什么,所以我确信有更有效的方法可以做到这一切,但这是我能够想到的。

3 个答案:

答案 0 :(得分:3)

因为1,2 被MySQL视为逗号分隔值。它将其视为一个值为" 1,2"的字符串。您没有与该值匹配的行,因此您没有得到任何结果。

See this answer了解如何解决此问题。

答案 1 :(得分:1)

你可以设置它,而不是字符串,它是一个数组。 即

<form method="GET">
<input name="test[]" value="1" />
<input name="test[]" value="2" />
<input type="submit">
</form>

<?php
print_r($_GET);
?>

这将在您的网址中显示为:

www.myurl.com?test%5B%5D=1&test%5B%5D=2

答案 2 :(得分:1)

要将字符串转换为数组,您可以使用explode函数:

$query->where(array(
   'id:IN' => explode(',',$urlParam)
));