PHP MYSQL虽然LOOP不显示所有行

时间:2014-02-19 23:31:18

标签: php mysql loops while-loop

我正在尝试从我的数据库中选择所有行,其中'street'类似于数组中的内容($ streets)。

这就是我所拥有的......

    #TEXT AREA INPUT  = $streets
    $sql = "SELECT * FROM `data` WHERE `street` LIKE '%".implode("%' OR `street` LIKE     '%",$streets)."%'";
    echo $sql;
    $result = mysqli_query($con,$sql)  or die(mysql_error());
    $totalitems1 =  mysqli_num_rows($result);
    echo $totalitems1 . "<br>";
    while($row = mysqli_fetch_array($result))
    {
    echo $row['street']. "<br>";

    }

varible $ streets从文本区域输入中展开,每个值都在新行上。

当我使用PHP处理它时,只返回与最后一个'OR'相似的行。(文本区域中的最后一行)。但是,当我将生成的SQL复制并粘贴到PHPMYADMIN中时,它会按预期返回所有数据。

我在这里缺少什么?感谢。

1 个答案:

答案 0 :(得分:0)

我的猜测是你没有从每个$street条目的末尾剥离换行符,因此只有最后一个条目看起来有效,因为它可能没有尾随换行符。毫无疑问,您的查询可能看起来像......

SELECT * FROM `data` WHERE `street` LIKE '%foo
%' OR `street` LIKE '%bar
%' OR `street` LIKE '%baz%'

快速解决方法是使用......

implode("%' OR `street` LIKE '%", array_map(function($s) use ($con) {
    return $con->escape_string(trim($s));
}, $streets))

理想情况下,您应该使用带参数绑定的预准备语句。