PHP与explode()和SQL查询有关

时间:2015-03-15 17:48:00

标签: php mysql sql explode

我的PHP代码如下:

    //$menutype is defined in this point, and no problem with it
    $sql = "SELECT struct FROM menutype WHERE id=$menutype;"; 
    $result = mysql_query($sql);
    list($struct) = mysql_fetch_row($result);
    $menu = explode("\n", $struct); //Explode to make an array with each line
    foreach ($menu as $index => $value)
    {
        //$barid is defined in the top of the document and no issue with it
        creatabla($barid, $value);
    }

function creatabla($barid, $tipo)
{
    $tipo = trim($tipo, ' '); //trim to delete unwanted spaces
    $sql = "SELECT name FROM products WHERE tipo LIKE '%$tipo%' AND restaurante='$barid';"; 
    $result = mysql_query($sql);
    while(list($name) = mysql_fetch_row($result)) 
    {
        echo "$name";
    }
}   

类似'结构'行结构:

Line1
Line2
Line3
Line4AndLastLine

在Last Line之后没有回车。

嗯,代码通常可以正常工作,但如果我修改了' Struct'行,有些行不会被读取,所以我通常需要在phpmyadmin的advaced编辑器中编辑struct行。

我该怎么做才能解决这个问题?我可以在sql语句中尝试其他类型的过滤器吗?我该怎么做才能改进修剪或爆炸功能来解决这个问题?

提前感谢你们。

1 个答案:

答案 0 :(得分:1)

我想我已经开始理解这个问题了,我猜你是对的 - 我猜最后会有一个\ r \ n字符。

现在你称之为:

trim($tipo, ' ');

删除 ONLY 空格。如果您将其更改为:

trim($tipo);

然后它会删除更多类型的空格,包括(但不限于)\ r \ n字符。

See HERE了解有关trim()功能的更多信息。