Код PHP после '>' отображается как HTML - PullRequest
2 голосов
/ 05 июля 2011

Я схожу с ума, пытаясь использовать PHP для получения и вставки значений в базу данных SQLite.Я даже не успел зайти так далеко!
Кажется, что весь php-код после '>' отображается в виде HTML-текста, и я не могу понять, почему.Код размещен ниже.

   <html>
<head></head>
<body>
<?php
try
{
  //create or open the database
  $database = new SQLiteDatabase('myDatabase.sqlite', 0666, $error);
}
catch(Exception $e)
{
  die($error);
}

//add Movie table to database
$query = 'CREATE TABLE Movies ' .
         '(Title TEXT, Director TEXT, Year INTEGER)';

if(!$database->queryExec($query, $error))
{
  die($error);
}

//insert data into database
$query =
  'INSERT INTO Movies (Title, Director, Year) ' .
  'VALUES ("The Dark Knight", "Christopher Nolan", 2008); ' .

  'INSERT INTO Movies (Title, Director, Year) ' .
  'VALUES ("Cloverfield", "Matt Reeves", 2008); ' .

  'INSERT INTO Movies (Title, Director, YEAR) ' .
  'VALUES ("Beverly Hills Chihuahua", "Raja Gosnell", 2008)';

if(!$database->queryExec($query, $error))
{
  die($error);
}

//read data from database
$query = "SELECT * FROM Movies";
if($result = $database->query($query, SQLITE_BOTH, $error))
{
  while($row = $result->fetch())
  {
    print("Title: {$row['Title']} <br />" .
          "Director: {$row['Director']} <br />".
          "Year: {$row['Year']} <br /><br />");
      }
    }
    else
    {
      die($error);
    }
    ?>
    </body>
    </html>

И это то, что отображается в html.

queryExec($query, $error)) { die($error); } //insert data into database $query = 'INSERT INTO Movies (Title, Director, Year) ' . 'VALUES ("The Dark Knight", "Christopher Nolan", 2008); ' . 'INSERT INTO Movies (Title, Director, Year) ' . 'VALUES ("Cloverfield", "Matt Reeves", 2008); ' . 'INSERT INTO Movies (Title, Director, YEAR) ' . 'VALUES ("Beverly Hills Chihuahua", "Raja Gosnell", 2008)'; if(!$database->queryExec($query, $error)) { die($error); } //read data from database $query = "SELECT * FROM Movies"; if($result = $database->query($query, SQLITE_BOTH, $error)) { while($row = $result->fetch()) { print("Title: {$row['Title']}" . "Director: {$row['Director']}". "Year: {$row['Year']}"); } } else { die($error); } ?> 

Я запускаю это в Mac OS X на моем локальном сервере Apache.
Любая помощь будет потрясающей.

Ответы [ 7 ]

2 голосов
/ 05 июля 2011

, поскольку код между <?php и -> не содержит символов <или>, он рассматривается как некий HTML-тег.Итак, вы видите все снаружи, если этот тег.это значит - php не установлен (правильно)

попробуйте это: проверьте ваш httpd.conf на наличие такой строки: AddType application/x-httpd-php .php и попробуйте сохранить ваш файл как .php

1 голос
/ 05 июля 2011

Если вы используете файл .html, попробуйте переименовать его в .php.

0 голосов
/ 05 июля 2011

Ваш код не выполняется на сервере. Apache предоставляет ваш php-исходный код. Ваш веб-браузер считает, что <?php является открывающим тегом, но он не распознает его и не отображает тег. Здесь ваш браузер считает, что упомянутый тэг заканчивается: if(!$database->queryExec($query, $error)). Видите > в этой строке? Таким образом, ваш браузер считает, что все от <?php до этого > является неизвестным тегом, который он игнорирует и не отображает. В вашем браузере щелкните правой кнопкой мыши на странице и выберите просмотреть исходный код. Тогда вы должны увидеть полный источник.

Убедитесь, что у вас правильно установлен mod-php в вашем apache или что вы правильно настроили cgi-mod. Проверьте ваш httpd.conf на наличие зарегистрированных расширений файлов (должен выглядеть как AddType application/x-httpd-php .php .phtml .php3). Убедитесь, что ваш php-файл имеет файловые расширения, соответствующие этой конфигурации.

0 голосов
/ 05 июля 2011

Какое имя файла вы использовали для сценария?

0 голосов
/ 05 июля 2011

Конечно, ваш Apache не настроен должным образом с php, он просто отправляет необработанную страницу, а не только после>, проверив view-source в вашем браузере, вы можете увидеть весь ваш код

0 голосов
/ 05 июля 2011

если вы говорите, что код после?> Работает как html, тогда все в порядке .. потому что?> Закрывающий тег для php ..

все, что находится под "", считается php, а вне его - html ...

или php сервер установлен неправильно, поэтому все рассматривается как HTML-код ..

0 голосов
/ 05 июля 2011

Вы уверены, что ваша установка php работает? Попробуйте запустить этот скрипт (test.php):

<?php
phpinfo();
?>
...