Ошибка разбора в php-коде

Я получаю

Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING)

ошибка в следующей строке php code..pls может кто-нибудь объяснить проблему.

   echo "<tr><td><a href=\"$row['link']\"><img src=\"$row['image']\" title=\"$row['game']\" width=\"68\" height \"57\" /></a></td><td><a href=\"$row['link']\">$row['game']</a> </td><td> $row['total']</td></tr>";

7 ответов

Решение

Пожалуйста, из-за разборчивости, используйте одинарные кавычки при использовании большого количества двойных кавычек в строке и объединяйте свои переменные. В противном случае вы получите множество \ в вашей строке, и будет сложнее обнаружить переменные:

echo '  <tr>
            <td>
                <a href="'.$row['link'].'">
                    <img src="'.$row['image'].'" title="'.$row['game'].'" width="68" height="57" />
                </a>
            </td>
            <td>
                <a href="'.$row['link'].'">'.$row['game'].'</a>
            </td>
            <td>'.$row['total'].'</td>
        </tr>';

Проблема в том, что переменные массива встроены в строку.

Когда вы встраиваете переменную-массив в строку, вы должны заключить ее в фигурные скобки, например:

$stringvar = "blah blah {$arrayvar['element']} blah blah";

Поэтому в вашем коде $row['link'] и все остальные $row элементы должны быть заключены в {} брекеты.

Обратите внимание, что вы можете (и должны) сделать это для всех переменных в строке, но это обязательно для элементов массива.

Кроме того, у вас отсутствует пропущенная косая черта в одной из кавычек в вашей строке: \"57", Это также приведет к синтаксической ошибке.

Надеюсь, это поможет.

Чтобы помочь с отладкой: это довольно длинная и сложная строка кода, с множеством экранированных кавычек и т. Д., Которые могут затруднить отладку за один раз (особенно, когда у нее много проблем).

Мой совет - отлаживать его, разбивая его на более управляемые куски. Вы по-прежнему будете получать те же ошибки по тем же причинам, но их будет легче найти. Вы можете снова соединить линию в одну длинную линию, как только она будет исправлена.

Наконец, я бы рекомендовал использовать приличную IDE или текстовый редактор, который поддерживает подсветку синтаксиса. Это даст вам гораздо лучшую обратную связь о том, где ошибки.

Попробуй это

   echo "<tr><td><a href=\"$row['link']\"><img src=\"$row['image']\" title=\"$row['game']\" width=\"68\" height \"57\" /></a></td><td><a href=\"$row['link']\">$row['game']</a> </td><td> $row['total']</td></tr>";

пропавший без вести

Вы пропустили одну косую черту

 height =\"57\"
echo "<tr>
 <td>
  <a href=\"{$row['link']}\">
   <img src=\"{$row['image']}\" title=\"{$row['game']}\" width=\"68\" height \"57\" />
  </a>
 </td><td>
  <a href=\"{$row['link']}\">{$row['game']}</a> </td><td> {$row['total']}
 </td>
</tr>";

Всегда полезно использовать { } для хранения переменных в строке, особенно здесь, потому что это значение массива.

Более того, здесь произошла ошибка:height =\"57" => height =\"57\"

В качестве альтернативы вы можете написать, как показано ниже, чтобы получить больше права:

echo '<a href="'.$row['link'].'">...';

Попробуй это:

echo '<tr><td><a href="'.$row['link'].'"><img src="'.$row['image'].'" title="'.$row['game'].'" width=\"68\" height \"57" /></a></td><td><a href="'.$row['link'].'">'.$row['game'].'</a> </td><td> '.$row['total'].'</td></tr>';

Попробуй это

echo '<tr><td><a href="' . $row['link'] . '"><img src="' . $row['image'] . '" title="' . $row['game'] . '" width="68" height="57" /></a></td><td><a href="' . $row['link'] . '">' . $row['game'] . '</a></td><td>' . $row['total'] . '</td></tr>';
Другие вопросы по тегам