php - 尝试使用 PHP 将查询传递到数据库时出错(来自 HTML 表单的数据)
问题描述
编辑:问题现在已经解决,我在下面提供了我的原始版本和固定版本的 PHP 代码。老实说,我不确定有什么区别,我以前从未使用过 PHP,但希望这对某人有所帮助!
寻求帮助。我目前正在做大学课程,需要一个元素的帮助。当我尝试传递从 Web 表单中获取的数据时,如果我使用以下语句,页面会出错:
echo $db_connection->error;
它给出的错误是:
Parse error: syntax error, unexpected '$useremail' (T_VARIABLE) in (directory goes here, i've removed it)
我不知道如何解决这个错误。如果我回显 SQL 插入查询并将其复制+粘贴到数据库中,它会完美运行。
任何帮助将非常感激。
编辑:固定的完整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>
解决方案
问题出在您的 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 语法的一部分
推荐阅读
- xml - 如何在 Word 自定义 xml 功能区菜单中显示键提示?
- android - RecyclerView notifyItemRangeRemoved 没有动画
- ssrs-subscription - SSRS 订阅按计划失败,但手动运行时成功
- java - 谷歌云平台默认队列暂停本身
- scala - Spark - 如何处理源表可能更改的数据帧
- python - 将具有许多包/模块的 python tkinter 应用程序转换为 EXE 的最佳方法?
- list - AutoMapper:映射从 List 继承的类
到另一个班级 - c++ - Windows 版本的 MPIR 内存损坏错误
- galaxy - 在远程机器中找不到引导服务
- javascript - 在 Javascript 中构造对象数组的索引顺序始终是 0,1,...n