Ошибка при попытке передать запрос в базу данных с PHP (данные из формы HTML) - PullRequest
0 голосов
/ 21 апреля 2020

РЕДАКТИРОВАТЬ: проблема теперь решена, я предоставил мой исходный и мои фиксированные версии кода PHP ниже. Честно говоря, не уверен, в чем разница, я никогда раньше не использовал PHP, но, надеюсь, это кому-нибудь поможет!

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

    echo $db_connection->error;

выдаваемая ошибка:

    Parse error: syntax error, unexpected '$useremail' (T_VARIABLE) in (directory goes here, i've removed it)

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

любая помощь будет принята с благодарностью.

edit: исправлен полный PHP код следующим образом:

        <?php

require_once "db.php";
    // below code checks whether the form is submitted
    // using the POST method or not

    if($_SERVER["REQUEST_METHOD"] == "POST")
    {
        // the form is submitted using the POST method
        // now proceed to process the form's data

        //$errPass = $errEmail = $errName = $errCVtype = $errCompanyname = "";
        //$pass = $email = $name = $usercomment = $cvtype = $companyname = "";

        //$pass           = mysqli_real_escape_string($db_connection, 
$_POST["password"]);

       // $salt = "TheQuickBrownFoxJumpedOverTheMoonTwice";
       // $data = $pass . $salt;
        //$password = crypt($data);
        //these commented lines are redundant (left in by lecturer)

        $useremail      = mysqli_real_escape_string($db_connection, $_POST["email"]);
        $fname          = mysqli_real_escape_string($db_connection, $_POST["fname"]);
        $sname          = mysqli_real_escape_string($db_connection, $_POST["sname"]);
        $cname          = mysqli_real_escape_string($db_connection, $_POST["cname"]);
        $usercomment    = mysqli_real_escape_string($db_connection, $_POST["comment"]);
        $cvtype         = mysqli_real_escape_string($db_connection, $_POST["cvchoice"]);
    }
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
    <title>PHP and MySQLi Thank you message.</title>
    <link rel="stylesheet" href="../CSS/process_cv.css">
</head>
<body>
    <div id="container">
        <div id="text-field">
            <section>
<?php 


    if($_SERVER["REQUEST_METHOD"] == "POST" )
    {

        $qry = "insert into cv_test(email, fname, sname, cname, usercomment, cvrequested)
                values('$useremail', '$fname', '$sname', '$cname', '$usercomment', '$cvtype');";
        $res = $db_connection->query($qry);
        if($res)
        {   
            echo "<p id='Title'>Thank you for requesting to see my CV.</p>";
            echo "<p id='Name'>Your Name: <strong>".$fname."</strong></p>";
            echo "<p id='Email'>Your Email: <strong>".$useremail."</strong></p>";
            echo "<p id='Company'>Your Company Name: <strong>".$cname."</strong></p>";
            echo "<p id='Comment'>Your Comment: ".$usercomment."</p>";
            echo "<p id='CV'><a href='REMOVED PRIVATE URL";

            if ($cvtype === 'short') 
                echo "Short_CV";
            else
                echo "Long_CV";
            echo ".pdf' target='_blank'>View my ".$cvtype." CV</a></p>";
            //echo "<p id='image_map'><a href='../image_map.html'>Return To Image_Map</a></p>";
            exit();
        }
        else 
        {
            echo "<p>Error occurred, kindly try again later.</p>";
            //echo "<p><a href='../image_map.html'>Return To Image_Map</a></p>";
            exit();
        }

    }

$db_connection->close();    
?>
     </section>
    </div>
</div>
</body>
</html>

исходный код был:

        <?php

require_once "db.php";
    // below code checks whether the form is submitted
    // using the POST method or not

    if($_SERVER["REQUEST_METHOD"] == "POST")
    {
        // the form is submitted using the POST method
        // now proceed to process the form's data

        //$errPass = $erruseremail = $errfname = $errsname = $errcname = $errusercomment = $errcvtype = "";
        //$pass = $useremail = $fname = $sname = $cname = $usercomment = $cvtype = "";

        //$pass           = mysqli_real_escape_string($db_connection, $_POST["password"]);

        //$salt = "TheQuickBrownFoxJumpedOverTheMoonTwice";
        //$data = $pass . $salt;
        //$password = crypt($data);

        $useremail      = mysqli_real_escape_string($db_connection, $_POST["email"]);
        $fname          = mysqli_real_escape_string($db_connection, $_POST["fname"]);
        $sname          = mysqli_real_escape_string($db_connection, $_POST["sname"]);
        $cname          = mysqli_real_escape_string($db_connection, $_POST["cname"]);
        $usercomment    = mysqli_real_escape_string($db_connection, $_POST["comment"]);
        $cvtype         = mysqli_real_escape_string($db_connection, $_POST["cvchoice"]);
    }
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
    <title>PHP and MySQLi Thank you message.</title>
</head>
<body>
<?php 
    if($_SERVER["REQUEST_METHOD"] == "POST")
    {
        $qry = "insert into cv_test(email, fname, sname, cname, usercomment, cvrequested)<br>
                values('$useremail', '$fname', '$sname', '$cname', '$usercomment', '$cvtype');";
        echo $qry . "<br>";
        $res = $db_connection->query($qry);
        if($res)
        {
            echo "<p>Thank you for requesting to see my CV.</p>";
            echo "<p> Your name: <strong>".$fname." ".$sname."</strong></p>";
            echo "<p>Your Company Name: <strong>".$cname."</strong></p>";
            echo "<p>Your email: ".$useremail."</p>";
            echo "<p>Your Comment: ".$usercomment."</p>";
            echo "<p><a href='REMOVED PRIVATE URL";

            if ($cvtype === 'short') 
                echo "Short_CV";
            else
                echo "Long_CV";
            echo ".pdf' target='_blank'>View my ".$cvtype." CV</a></p>";
            exit();
        }
        else 
        {
            echo "<p>Error occurred, kindly try again later.</p>";
            exit();
        }
    }
$db_connection->close();
?>
</body>
</html>

1 Ответ

0 голосов
/ 22 апреля 2020

Проблема была в вашем sql тексте, есть тег 'br'.

"insert into cv_test(email, fname, sname, cname, usercomment, cvrequested)<br>
                values('$useremail', '$fname', '$sname', '$cname', '$usercomment', '$cvtype');"

Это вызвало ошибку.

В вашем новом тесте sql вы удалили тег 'br'.

"insert into cv_test(email, fname, sname, cname, usercomment, cvrequested)
                    values('$useremail', '$fname', '$sname', '$cname', '$usercomment', '$cvtype');"

'br' не является частью синтаксиса sql

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