【发布时间】:2015-03-15 17:47:59
【问题描述】:
我在 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 的高级编辑器中编辑 struct 行。
我能做些什么来解决这个问题?我可以在 sql 语句中尝试其他类型的过滤器吗?我可以做些什么来改进修剪或爆炸功能来解决这个问题?
提前感谢大家。
【问题讨论】:
-
首先,让我从强制警告不要使用mysql_*函数开始。它们已被弃用。您应该改用 mysqli_* 或 PDO 函数。上面的代码可以进行 SQL 注入了。
-
当您修改
Struct行时,您会说“某些行无法正常读取”——这是什么意思?两条线看起来好像在同一条线上吗?还是完全忽略了某些行?在创建后立即执行print_r($menu);可能会有所帮助。 -
好线和坏线之间似乎没有区别:S
-
对不起,我不明白。您能否举例说明当 Struct 行中有一行错误时会发生什么(实际程序输出)?
-
嗨,好行和坏行之间没有区别:即:我有一行内容为:“Test1”,输出显示:“Test1”,但执行不会使用 sql 查询返回任何 Tipo 为 Like %Test1% 的内容。如果我用 phpmyadmin 的高级编辑器编辑 Test1 行,每个 print_r 的输出都是一样的,但是现在,代码运行成功。我认为这可能是行尾,简单的编辑器可以添加一些奇怪的行尾。 :S