2013-10-11 6 views
-1

Может кто-то помочь мне, поскольку я новичок в PHP.PHP Замечание: Неопределенная переменная в PHP

Я использую механизм шаблонов smarty, и то, что я пытаюсь сделать, это на моем сайте, у каждого фильма есть своя категория, и я пытаюсь отобразить категорию под фильмом, используя эту функцию.

/* 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 

Может кто-нибудь указать мне в направлении решения этой ошибки.

Благодаря

+0

Этот вопрос не соответствует теме, поскольку сообщение об ошибке предоставляет исчерпывающую информацию для решения этой проблемы. – vascowhite

ответ

1

Я полагаю, что точки ошибок PHP с такой же проблемой, как MySQL-ошибки:

Это кажется ваша переменная $movieid не инициализируется, поэтому SQL-оператор не удается, и выдает ошибку на последний кронштейн.

Возможно, вы можете убедиться, что, поставив некоторые отладочные выходы до того, как SQL-оператор будет построен $e = ...., вы увидите, что находится внутри этой переменной, и оттуда.

0

Можете ли вы сделать echo $movieid; до этой строки:

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

Просто, чтобы быть уверенным, если функция ПОЛУЧАТЬ правильный идентификатор.

0

Если вы используете среду STRICT для своей разработки (и вам нужно), а PHP 5.5 или выше, mysql_real_escape_string устарел. Поэтому они могут быть ошибкой, возвращаемой им. Есть ли ошибка, предшествующая той, которую вы указали в своем журнале Apache?

Смежные вопросы