我一定是瞎了眼,或者是累了.我找不到错误的来源 错误是"Parse Error:语法错误,文件意外结束",并引用代码的最后行号.我错过了什么.此外,代码的任何一般PHP提示也将受到欢迎.我上完大学课程才学了8周的PHP

    <?php include '../view/header.php'; ?>
    <?php require('../model/database.php');?>

    <?php

    $email = filter_input(INPUT_POST, 'email');


    if ($email == '')
    {   
     $error = 'Email cannot be blank. Please enter a valid email.';
    require_once('index.php');
   exit();
   }



    $query = 'SELECT customerID, firstName, lastName, email
        FROM customers
        WHERE email = :email';
    
 $statement = $db->prepare($query);
 $statement->bindValue(':email', $email);
$statement->execute();
$customer = $statement->fetch();
$statement->closeCursor();


if ($customer['email'] != $email)
{
$error = 'No matching email. Please enter a valid email.';

require_once('index.php');
exit();
}


$query = 'SELECT productCode
        FROM products
        ORDER BY productCode';
    
$statement = $db->prepare($query);
$statement->execute();
$productCodes = $statement->fetchAll();
$statement->closeCursor();

?>

<main>
<h2>Register Product</h2>

    <p></p>    
    <form action="product_registered.php" method="post" id="aligned">            
        <input type="hidden" name="customerID"
            value="<?php echo $customer['customerID']; ?>">     

        <label>Customer:</label>
        <label><?php echo htmlspecialchars($customer['firstName'] . ' ' . $customer['lastName']); ?></label>
        <br>

        <label>Product:</label>
        <select name="productCode">
            <?php foreach ($productCodes as $productCode): ?>
            <option value="<?php echo htmlspecialchars($productCode['productCode']); ?>">
                <?php echo htmlspecialchars($productCode['name']); ?>
            </option>
        </select>
        <br>                        
        <label>&nbsp;</label>           
        <input type="submit" value="Register Product" /><br>            
    </form>
</main>
<?php include '../view/footer.php'; ?>

推荐答案

您的代码中有两个问题.

(1)你有<?php foreach ($productCodes as $productCode): ?>个,但你缺少endforeach;

因此,在第</option>行之后添加以下行

<?php endforeach; ?>

(2)您是否获取了name个数据?由于您希望在下面的代码行中使用$productCode['name']

<?php echo htmlspecialchars($productCode['name']); ?>

所以把这行字改一下:

$query = 'SELECT productCode FROM products ORDER BY productCode';

$query = 'SELECT productCode, name FROM products ORDER BY productCode';

Php相关问答推荐

提交表格后的重定向不起作用

如何在Woocommerce中禁用机器人添加到推车?

PHP:从数组中获取唯一的数字组合

PHP-转义字符串内的双反斜杠

PHP原始数据读取引发max_input_vars错误

通过注册在Laravel中分配角色

在WooCommerce中禁用客户用户角色的纳税计算

使注册字段UserMeta值对于WooCommerce中的每个用户是唯一的

使用PHP编码的字符串与使用OpenSSL编写的shell 代码之间的差异

Woocommerce单一产品Ajax添加到带有自定义购物车项目数据的购物车

curl_close()未从PHP 8开始写入CURLOPT_COOKIEJAR会话文件

将一个表中的行连接为不同表MYSQL中的一列

WooCommerce 回购自定义插件:如何更新用户钱包?

带有分类术语数组的 WordPress Elementor 自定义查询 - 如何要求所有术语都在返回的帖子中

通过存储库检索 Blade 上的单值数据 出错

htaccess Rewriterule 无法以任何方式工作

使用 Process facade 在外部 Laravel 项目上运行 Artisan 命令会返回主项目的数据库错误

使用 PHP ImageMagick 库将 pdf 文件的前 n 页转换为单个 png 图像文件

Laravel - 关联与设置观察者事件的 ID

为什么 PDO 允许使用带命名占位符的索引数组,但仅在禁用仿真时才允许?