PHP注意:PHP中的未定义变量

时间:2013-10-11 09:23:51

标签: php smarty

有人可以帮助我,因为我是PHP的新手。

我正在使用智能模板引擎,而我正在尝试做的是在我的网站上每部电影都有自己的类别,我试图通过使用此功能在电影下方显示类别。

/* returns a list of categories (including ids and details) for the given movie */

public function getMovieCategoryDetails($movieid,$lang=null){
    $movieid = mysql_real_escape_string($movieid);
    $e = mysql_query("SELECT * FROM movie_tags WHERE id IN (SELECT tag_id FROM movie_tags_join WHERE movie_id=$movieid)") or die(mysql_error());
    $tags = array();
    if (mysql_num_rows($e)){
        while($s = mysql_fetch_array($e)){
            $s['tag'] = json_decode($s['tag'],true);
            if ($lang){
                $s['tag'] = $s['tag'][$lang];
            }

            $tags[$s['id']] = $s;
        }
    }
    return $tags;
}

然后调用该函数。

$tags = $movie->getMovieCategoryDetails($movieid,$language);
if (count($tags)){
    $smarty->assign("tags",$tags);
}

然后显示它。

{if $movie_tags}
<tr>
    <td width="70"><strong>Tags:</strong></td>
    <td style="width:387px; float:left;">
        <span class="movie_info">
        {foreach from=$movie_tags key=tag_id item=tag name=tags}
            {$tags}
        {/foreach}  
        </span>
    </td>
</tr>
{/if}

但是得到这个错误。

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1

在PHP_ERROR_LOG中我收到了这个错误。

[11-Oct-2013 11:18:16 Europe/Berlin] PHP Notice:  Undefined variable: movieid in C:\xampp\htdocs\home.php on line 69

任何人都可以指出我解决这个错误的方向。

由于

3 个答案:

答案 0 :(得分:1)

我认为php错误指向与MySQL错误相同的问题:

您的变量$movieid似乎未初始化,因此SQL语句失败并在最后一个括号处抛出错误。

也许您可以通过在构建SQL语句$e = ....之前放置一些调试输出来确保该变量内部的内容并从那里开始。

答案 1 :(得分:0)

你可以在这行之前做echo $movieid;

$tags = $movie->getMovieCategoryDetails($movieid,$language);

确定,如果函数正在接收正确的id。

答案 2 :(得分:0)

如果您正在使用STRICT环境进行开发(并且您应该)并且不推荐使用PHP 5.5或更高版本的mysql_real_escape_string。因此,它们可能是由它返回的错误。您在Apache日志中提到的错误之前是否有错误?