PHP explode() 和 SQL 查询问题

PHP issues with explode() and SQL query

我在 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";
    }
}   

类似的 'struct' 行结构:

Line1
Line2
Line3
Line4AndLastLine

最后一行后没有车 return。

嗯,代码通常工作正常,但如果我修改 'Struct' 行,有些行将无法正常读取,所以我通常需要在 phpmyadmin 的高级编辑器中编辑结构行.

我该怎么做才能解决这个问题?我可以在 sql 语句中尝试其他类型的过滤器吗?我可以做些什么来改进 trim 或 explode 函数来解决这个问题?

提前谢谢大家。

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

现在你正在调用这个:

trim($tipo, ' ');

这会删除 ONLY 个空格。如果您将其简单地更改为:

trim($tipo);

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

See HERE 有关 trim() 函数的更多信息。