-1

谢谢你帮我解决这个问题。出现以下问题:

我有一个名为“news()”的函数。此功能正常工作。但是,当我尝试从数据库调用此函数时,就会出现问题。

我的数据库中存储了以下数据:

Table MENU
menu_id (int) -> 1, menu_name(varchar(255)) -> Home, menu_content (longtext) -> <?php news() ?>, menu_status (varchar(255)) -> visible, menu_rank (varchar(255)) -> active.

如您所见,我将以下 PHP 语句存储在我的数据库“ <?php news() ?>”中。

当我使用以下查询从数据库中收集数据时:

$content_query = mysql_query ("SELECT * FROM MENU WHERE menu_id = '".$var."') or die (mysql_error()); 
$content = mysql_fetch_assoc($content_query);
$menu_content = $content['menu_content'];
$menu_title = ['menu_title'];

当我回显我的 $menu_title 时,它​​会正确显示数据。如果我回显我的 $menu_content,它不会显示任何内容。当我尝试调试时,似乎已经为该数据添加了 HTML 注释。像这样:

<!--?php news();?-->

有谁知道如何解决这个问题?谢谢你帮助我。

4

3 回答 3

1

您在"SQL 语句的末尾缺少一个结束引号:

"SELECT * FROM MENU WHERE menu_id = '".$var."'

应该:

"SELECT * FROM MENU WHERE menu_id = '".$var."'"

(注意结尾的引号字符)

更简洁:

"SELECT * FROM MENU WHERE menu_id = '$var'"
于 2012-04-15T13:57:02.597 回答
0

为了做你想做的事,你必须 eval() 返回的数据。当你决定使用 eval 函数时,你必须非常小心。绝对确保没有用户数据成为您的 eval 语句的方式!不过,不确定“<!--”。试试看。

于 2012-04-15T14:16:25.023 回答
0

你的第一行缺少一个结束的'"'。要解决这个问题,只需替换这个:

$content_query = mysql_query ("SELECT * FROM MENU WHERE menu_id = '".$var."') or die (mysql_error());

有了这个:

$content_query = mysql_query ("SELECT * FROM MENU WHERE menu_id = '".$var."') or die (mysql_error());

如果这是用户输入,我还建议在 $var 变量周围添加 intval() 。否则,恶意用户可能会注入 SQL 来编辑您的数据库。这只会将任何文本值转换为整数。

另外,只是为了确认一下,您是否使用 PHP 服务器,因为当有人尝试在 .html 文件或未安装 PHP 的 .php 文件中输出 PHP 函数时,我看到了此错误。

于 2012-04-15T14:25:06.070 回答