Php 语法错误,意外的T_封装了_和_空格,应为T_字符串或T_变量或T_NUM_字符串
我已经盯着这个代码看了好几个小时了,我不知道我的错误在哪里。我知道这个语法错误通常是由于缺少或不合适的大括号或单引号/双引号的问题而出现的,我不确定代码中是否有这样的错误。我现在只想修改我的语法,这样我就可以完全编译代码了。任何帮助都将不胜感激。这是我的密码:Php 语法错误,意外的T_封装了_和_空格,应为T_字符串或T_变量或T_NUM_字符串,php,parsing,syntax,Php,Parsing,Syntax,我已经盯着这个代码看了好几个小时了,我不知道我的错误在哪里。我知道这个语法错误通常是由于缺少或不合适的大括号或单引号/双引号的问题而出现的,我不确定代码中是否有这样的错误。我现在只想修改我的语法,这样我就可以完全编译代码了。任何帮助都将不胜感激。这是我的密码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Add to and Read from the Database</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
</head>
<body>
<?php
function print_form() {
echo <<<END
<form action="$_SERVER[PHP_SELF]" method="post">
<h3>Please put your comments below.</h3>
<input type="hidden" name="stage" value="process" >
<p>Name:</p>
<input type="text" size="30" name="WholeName" />
<p>Comment:</p>
<input type="text" size="200" name="Comment" />
<input type ="submit" value ="Submit" >
</form>
END;
}
function process_form() {
print "<p>adding comment...</p>";
$Name = $_POST['WholeName'];
$Comment = $_POST['Comment'];
if( preg_match("^[a-zA-Z]+$", $Name)) {
if( preg_match("^[a-zA-Z0-9]_\-\'[.?!]+$", $Comment)) {
$sql = "insert into comments1 values (
'$Name',
'$Comment')";
$result = mysql_query($sql) or die("Mysql query failed");
} else {
print "invalid name";
}
} else {
print "invalid characters";
}
}
$db = mysql_connect("", "", "");
if (!$db) {
print "Error - Could not connect to mysql";
exit;
}
$er = mysql_select_db("");
if (!$er) {
print "Error - Could not connect to comments1 database";
exit;
}
if (isset($_POST['stage']) && ('process' == $_POST['stage'])) {
process_form();
} else {
print_form();
}
?>
</body>
</html>
添加到数据库并从中读取
这可能是一个粘贴问题,但就我从您的代码中所看到的情况来看,您缺少了要复制的HTML部分周围的单引号
如果没有,您能否正确地发布代码并告诉我们是哪一行导致了错误?您的问题是没有正确地关闭HEREDOC。包含END的行
在结束后有额外的空格代码>导致heredoc未终止。我偶然发现了这个问题,因为我犯了相同的错误。我的问题是由于一个稍微不同的问题,因为我自己解决了它,我认为在这里分享是有用的。有问题的原始代码:
$comment = "$_POST['comment']";
由于包含双引号,索引未正确取消引用,导致赋值错误。在我的情况下,我选择这样修复它:
$comment = "$_POST[comment]";
但删除任何一对引号都有效;我想这是一个风格问题:)最好的做法是说明错误报告的确切位置(即行号和列号)。这确实是一个“过于本地化”的问题。这只是一个提醒,可以省去很多麻烦:通过使用检查代码的良好IDE,可以轻松跟踪此类错误。FWIW,所讨论的行是$Name=$\u POST['WholeName']代码>它告诉我错误发生在第32行。你能推荐一个好的IDE给我使用吗?我永远不会得到它。非常感谢你。这就解决了它。我一直都在想。而且它在结尾之前不能包含任何空格代码>也可以,正如我在尝试格式化代码以提高可读性时发现的那样。在我的例子中,这是一个错误的回击。Geany的语法highlighter没有注意到这一点。但乔的语法荧光笔捕捉到了它。最初你的回答很有帮助,但我一直都在与假想敌作战;-)谢谢,我没有意识到这一点