XAMPP не выполняет мой PHP-скрипт или MySQL запросы - PullRequest
1 голос
/ 25 мая 2011

Работа через Head First PHP & MySQL как новичок.

Сначала я установил EasyPHP, и мне удалось получить php с помощью массива $ _POST и повторить ввод html-формы, но тогда функция mail () не сработала. Сделал поиск в Google и обнаружил, что мне нужен SMTP-сервер, поэтому я удалил EasyPHP и установил XAMPP. Я поместил мои html и php файлы в папку htdocs. HTML-форма работает, но php генерирует страницу с кодом php, а не с данными, хранящимися в массиве $ _POST. У меня также не было успеха с запросом SQL INSERT.

Я также попробовал код, предоставленный онлайн-ответами на книгу - без радости.

Я убедился, что серверы Apache и MySQL работают. Я также успешно использовал phpMyAdmin. Таким образом, кажется, что эти модули работают нормально - просто я ничего не написал.

Я также удалил XAMPP и установил новейшие серверы Apache и MySQL, следуя инструкциям, изложенным в книге, - опять же, не радость.

Я проверял наличие лишних папок и очищал реестр между каждой деинсталляцией и переустановкой.

Я на Windows 7 Home Premium 32bit.

Вот мой HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <link rel="stylesheet" type="text/css" href="style.css" /> 
    </head>
    <body>
        <h1>Share your story of alien abduction:</h1>
        <form method="post" action ="report.php">
            <label for="firstname">First name:</label>
            <input type="text" id = "firstname" name="firstname" /><br/>

            <label for="lastname">Last name:</label>
            <input type="text" id = "lastname" name="lastname"/><br/>

            <label for"email">What is your email address?</label>
            <input type "text" id = "email" name="email"/><br/>

            <label for="when">When did it happen?</label>
            <input type "text" id="when" name="when"/><br/>

            <label for="howlong">How long were you gone?</label>
            <input type="text" id="howlong" name="howlong"/><br/>

            <label for="howmany">How many did you see?</label>
            <input type = "text" id="howmany" name="howmany"/><br/>

            <label for="describe">Describe them:</label>
            <input type="text" id="describe" name="describe"/><br/>

            <label for="whattheydid">What did they do to you?</label>
            <input type="text" id="whattheydid" name="whattheydid"/><br/>

            <label for="fangspotted">Have you seen my dog Fang?</label>

            Yes <input type="radio" id="fangspotted" name="fangspotted" value="yes" />
            No <input type="radio" id="fangspotted" name="fangspotted" value="no" /><br />

            <img src="fang.jpg" width="100" height="175"><br/>

            <label for="other">Any other info then?</label>
            <textarea name="other"></textarea><br />

            <input type="submit" value="Send the skinny" name="submit" />
        </form>
    </body>
</html>

А вот и мой php:

<html>
    <head>
        <title>Aliens abducted me - Report an abduction</title>
    </head>
    <body>

    <h2>Aliens abducted me - Report an abduction</h2>

<?php

    $first_name = $_POST['firstname'];
    $last_name = $_POST['lastname'];
    $email = $_POST['email'];
    $when = $_POST['when'];
    $how_long = $_POST['howlong'];
    $how_many = $_POST['howmany'];
    $describe = $_POST['describe'];
    $what_they_did = $_POST['whattheydid'];
    $fang_spotted = $_POST['fangspotted'];
    $other = $_POST['other'];

    $dbc = mysqli_connect('localhost', 'root', '', 'aliendatabase');

    $query = "INSERT INTO aliens_abduction (first_name, last_name, when, how_long, " . 
    "how_many, description, what_they_did, fang_spotted, other, email) " . 
    "VALUES ('$first_name', '$last_name', '$when', '$how_long', '$how_many', " . 
    "'$describe', '$what_they_did', '$fang_spotted', '$other', '$email')";

    $result = mysqli_query($dbc, $query)
    or die ('Its fornicated');

    mysql_close($dbc);

    echo 'Thanks for submitting the form ' . $first_name . ' ' . $last_name . '.<br />';
    echo 'You were abducted ' . $when;
    echo ' by ' . $how_many . ' aliens';
    echo ' and were gone for ' . $how_long . '<br />';
    echo 'You described them like this:  ' . $describe . '<br />';
    echo 'Was fang there? ' . $fang_spotted . '<br />';
    echo 'Your email address is: ' . $email;

?>
    </body>
</html>

Обратите внимание, я здесь новичок и не буду обижаться на советы о том, как лучше задать вопрос!

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 25 мая 2011

Добавьте некоторые ПОЛЕЗНЫЕ проверки ошибок к вызовам вашей базы данных:

$dbc = mysqli_connect('localhost', 'root', '', 'aliendatabase') or die(mysql_error());

$result = mysqli_query($dbc, $query) or die(mysql_error());

просто делать die("it's hosed") совершенно бесполезно, особенно когда mysql предоставляет идеальную функцию, чтобы точно сказать, ПОЧЕМУчто-то спряталось.

0 голосов
/ 25 мая 2011
  • Прежде всего вам не нужен SMTP-сервер для запуска PHP

  • Второе: если phpMyAdmin работает нормально, а ваш PHP-скрипт - нет, то, скорее всего, это потому, что вы помещаете PHP-файл в неправильный каталог, или есть некоторые проблемы с виртуальным хостом apache.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...