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()
函数的更多信息。
我在 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()
函数的更多信息。