我正在尝试将php添加到表单中以从数据库填充它,以进行作业分配。我收到一个解析错误“解析错误:语法错误,/l7p1.php中第97行的文件意外结束”。盯着这个文件几个小时后,我似乎找不到我的错误。
在将所有单引号都更改为单引号之后,我本来在任何时候都变得“出乎意料(T_VARIABLE)”(希望有些事情我不理解,因为我不确定这会如何改变) ),然后将错误移至代码的最后一行和“文件意外末尾”。
这是php的第一部分,旨在用数据库中的项目(工具)填充表单
<?php
$db=mysli_connect(null,null,null,'weblab')
or die("Can't connect to db:".mysqli_connect_error($db));
$q = "select tool_item_no, tool_name, tool_price, tool_weight";
$q .= "from tool_t";
$q .= "order by tool_name";
$dbResult = mysqli_query($db,$q)
or die("Database query error" . mysqli_error($db));
$num = mysqli_num_rows($dbResult);
if ($num == 0){
echo"<h3>No Data</h3>";
}
while ($row = mysqli_fetch_assoc($dbResult)) {
$tool_item_no = $row["tool_item_no"];
$tmool_name = $row['tool_name'];
$tool_price = $row['tool_price'];
$tool_weight = $row['tool_weight'];
echo "<label for = '$tool_name'>Name : $toolname<br/>Price : $tool_price<br/>Weight : $tool_weight<br/>How many
$tool_name for this order?
<input type = 'text' name = '$tool_name' id = '$tool_item_no' size = ]'5'/></label><br/><br/>
}
?>
这是我代码中的php的第二位,旨在用数据库中的状态列表填充下拉列表
<?php
$db=mysli_connect(null,null,null,'weblab')
or die('Can't connect to
db:'.mysqli_connect_error($db));
$q = 'select state_abbr, state_name ';
$q .= 'from state_t ';
$q .= 'order by state_name;';
$dbResult = mysqli_query($db,$q)
or die('Database query error' .
mysqli_error($db));
$num = mysqli_num_rows($dbResult);
if ($num == 0){
echo '<option value=
'$state_abbr' >$state_name</option>';
echo '<option>Error</option>';
}
while ($row = mysqli_fetch_assoc($dbResult)) {
$state_abbr = $row[state_abbr];
$state_name = $row[state_name];
echo '<option value= '$state_abbr'>
$state_name</option>';
}
?>
答案 0 :(得分:0)
PHP中单引号和双引号之间的区别在于,可以解释双引号内的字符串,但不能解释单引号内的字符串(see here)。
在PHP中,当您遇到意外的EOF错误时,这是很多时间,因为您忘记了右括号,括号,引号,...
在您发布的第一部分代码中,语法高亮显示了您在最后一行忘记在echo语句中关闭双引号的情况。
也许单引号引起的问题之一是由于字符串中的单引号引起的。如果用单引号括起来的字符串中有一个单引号,则PHP解释程序会认为您正在关闭字符串。
答案 1 :(得分:0)
以下应该起作用。您混用了单引号,而您还不能设置Ca n't,所以需要将其括在“”中以转义单引号。我还在您的php中添加了“”并添加了句点。您需要查找有关php变量和字符串的更多教程。
$db=mysli_connect(null,null,null,'weblab')
or die("Can't connect to db:".mysqli_connect_error($db));
$q = "select tool_item_no, tool_name, tool_price, tool_weight";
$q .= "from tool_t";
$q .= "order by tool_name";
$dbResult = mysqli_query($db,$q)
or die("Database query error" . mysqli_error($db));
$num = mysqli_num_rows($dbResult);
if ($num == 0){
echo"<h3>No Data</h3>";
}
while ($row = mysqli_fetch_assoc($dbResult)) {
$tool_item_no = $row["tool_item_no"];
$tmool_name = $row['tool_name'];
$tool_price = $row['tool_price'];
$tool_weight = $row['tool_weight'];
echo "<label for = ".$tool_name.">Name : ".$toolname".<br/>Price : ".$tool_price."<br/>Weight : ".$tool_weight."<br/>How many
".$tool_name." for this order?
<input type = 'text name = ".$tool_name." id = ".$tool_item_no." size = ]'5'/></label><br/><br/>"
}
$db=mysli_connect(null,null,null,'weblab')
or die("Can't connect to
db:".mysqli_connect_error($db));
$q = 'select state_abbr, state_name ';
$q .= 'from state_t ';
$q .= 'order by state_name;';
$dbResult = mysqli_query($db,$q)
or die('Database query error' .
mysqli_error($db));
$num = mysqli_num_rows($dbResult);
if ($num == 0){
echo '<option value=
'$state_abbr' >$state_name</option>';
echo '<option>Error</option>';
}
while ($row = mysqli_fetch_assoc($dbResult)) {
$state_abbr = $row[state_abbr];
$state_name = $row[state_name];
echo '<option value= '.$state_abbr.'>
'.$state_name.'</option>';
}
答案 2 :(得分:-1)
在您的第一段代码中。您的回声需要使用引号和分号。