无法在我的第一个php中发现语法错误

时间:2019-04-19 14:29:24

标签: php html

我正在尝试将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>';
                                        }
                                ?>

3 个答案:

答案 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)

在您的第一段代码中。您的回声需要使用引号和分号。