-4

我的决赛项目的一部分是用 PHP 构建一个产品编辑页面。问题是我的老师很早就停止了 PDO 的教学,因为其中一名学生声称他们的网络服务器不支持它。所以我不得不自学 PDO,我的导师逐渐开始在课程网站上放置 PDO 版本的代码。问题是他从来没有根据产品编辑页面做过,而我却停滞不前。他曾建议我使用 bindParam() 代替我正在做的事情,但这并没有帮助。我被困在这个地方有一段时间了,除了几页外,大部分网站都完成了。这是我的产品编辑页面中的代码,一如既往,感谢您提供的任何帮助。

<?php
    $page_title = 'Product Edit';
    require '../inc/header.php';
?>

<?php
    if ($_SERVER["REQUEST_METHOD"] == "POST")
    {
        $query = "
            UPDATE fin_prod(
                prod_model,
                prod_desc,
                prod_price,
                prod_vol,
                prod_img1,
                prod_img1_desc,
                prod_img2,
                prod_img2_desc,
                prod_img3,
                prod_img3_desc,
                prod_img4,
                prod_img4_desc,
                prod_img5,
                prod_img5_desc,
                prod_ulvl,
                prod_cat,
                prod_type,
                prod_manu,
                prod_view,
                prod_imaging,
                prod_op_design,
                prod_focal_length,
                prod_op_dia,
                prod_focal_ratio,
                prod_op_type,
                prod_glass,
                prod_eye1,
                prod_eye1_mag,
                prod_eye2,
                prod_eye2_mag,
                prod_low_mag,
                prod_high_mag,
                prod_theo_mag,
                prod_lim_stel,
                prod_op_qual,
                prod_finder,
                prod_focus,
                prod_sec_obs,
                prod_sec_obs_dia,
                prod_sec_obs_area,
                prod_coat,
                prod_mount_type,
                prod_astro_img,
                prod_comp,
                prod_mat_bear,
                prod_mat_mount,
                prod_tube_len,
                prod_weight_tube,
                prod_weight_mnt,
                prod_feat,
                prod_warranty
            ) VALUES(
                :prodmodel,
                :proddesc,
                :prodprice,
                :prodvol,
                :prodimg1,
                :prodimg1_desc,
                :prodimg2,
                :prodimg2_desc,
                :prodimg3,
                :prodimg3_desc,
                :prodimg4,
                :prodimg4_desc,
                :prodimg5,
                :prodimg5_desc,
                :prodlvl,
                :prodcat,
                :prodtype,
                :prodmanu,
                :prodview,
                :prodimaging,
                :prod_opdesign,
                :prod_focallen,
                :prod_opdia,
                :prod_focalratio,
                :prod_optype,
                :prodglass,
                :prodeye1,
                :prodeye1_mag,
                :prodeye2,
                :prodeye2_mag,
                :prod_maglow,
                :prod_maghigh,
                :prod_magtheo,
                :prod_limstel,
                :prod_opqual,
                :prodfinder,
                :prodfocus,
                :prod_secobs,
                :prod_secobs_dia,
                :prod_secobs_area,
                :prodcoat,
                :prodmnt_type,
                :prodastro,
                :prodcomp,
                :prodmat_bear,
                :prodmat_mount,
                :prodtube_len,
                :prodweight_tube,
                :prodweight_mnt,
                :prodfeat,
                :prodwarranty
            )
        ";

        /*$queryparams = array(
            ':prodmodel' => $prod_model,
            ':proddesc' => $prod_desc,
            ':prodprice' => $prod_price,
            ':prodvol' => $prod_vol,
            ':prodimg1' => $prod_img1,
            ':prodimg1_desc' => $prod_img1_desc,
            ':prodimg2' => $prod_img2,
            ':prodimg2_desc' => $prod_img2_desc,
            ':prodimg3' => $prod_img3,
            ':prodimg3_desc' => $prod_img3_desc,
            ':prodimg4' => $prod_img4,
            ':prodimg4_desc' => $prod_img4_desc,
            ':prodimg5' => $prod_img5,
            ':prodimg5_desc' => $prod_img5_desc,
            ':prodlvl' => $prod_ulvl,
            ':prodtype' => $prod_type,
            ':prodmanu' => $prod_manu,
            ':prodview' => $prod_view,
            ':prodimaging' => $prod_imaging,
            ':prod_opdesign' => $prod_op_design,
            ':prod_focallen' => $prod_focal_len,
            ':prod_opdia' => $prod_op_dia,
            ':prod_focalratio' => $prod_focal_ratio,
            ':prod_optype' => $prod_op_type,
            ':prodglass' => $prod_glass,
            ':prodeye1' => $prod_eye1,
            ':prodeye1_mag' => $prod_eye1_mag,
            ':prodeye2' => $prod_eye2,
            ':prodeye2_mag' => $prod_eye2_mag,
            ':prod_maglow' => $prod_mag_low,
            ':prod_maghigh' => $prod_mag_high,
            ':prod_magtheo' => $prod_mag_theo,
            ':prod_limstel' => $prod_lim_stel,
            ':prod_opqual' => $prod_op_qual,
            ':prodfinder' => $prod_finder,
            ':prodfocus' => $prod_focus,
            ':prod_secobs' => $prod_sec_obs,
            ':prod_secobs_dia' => $prod_sec_obs_dia,
            ':prod_secobs_area' => $prod_sec_obs_area,
            ':prodcoat' => $prod_coat,
            ':prodmnt_type' => $prod_mnt_type,
            ':prodastro' => $prod_astro,
            ':prodcomp' => $prod_comp,
            ':prodmat_bear' => $prod_mat_bear,
            ':prodmat_mount' => $prod_mat_mount,
            ':prodtube_len' => $prod_tube_len,
            ':prodweight_tube' => $prod_weight_tube,
            ':prodweight_mnt' => $prod_weight_mnt,
            ':prodfeat' => $prod_feat,
            ':prodwarranty' => $prod_warranty
        );*/

        $stmt = $db->prepare($query);
        $result = $stmt->execute($queryparams);

        $rows = $result->fetchAll();

        exit;
    }

    else
    {
        $prod_id = $_GET['id'];
        if (strlen($prod_id) > 0)
        {
            $query = "
                SELECT
                    *
                FROM fin_prod WHERE prod_id=$prod_id
            ";

            $stmt = $db->prepare($query);
            $stmt->bindParam(':prod_id', $prod_id);
            $stmt->execute();

           /* $stmt->fetchAll();*/
            while($rows = $stmt->fetchAll())
            {
                $prod_model = $rows['prod_model'];
                $prod_desc = $rows['prod_desc'];
                $prod_price = $rows['prod_price'];
                $prod_vol = $rows['prod_vol'];
                $prod_img1 = $rows['prod_img1'];
                $prod_img1_desc = $rows['prod_img1_desc'];
                $prod_img2 = $rows['prod_img2'];
                $prod_img2_desc = $rows['prod_img2_desc'];
                $prod_img3 = $rows['prod_img3'];
                $prod_img3_desc = $rows['prod_img3_desc'];
                $prod_img4 = $rows['prod_img4'];
                $prod_img4_desc = $rows['prod_img4_desc'];
                $prod_img5 = $rows['prod_img5'];
                $prod_img5_desc = $rows['prod_img5_desc'];
                $prod_ulvl = $rows['prod_ulvl'];
                $prod_type = $rows['prod_type'];
                $prod_manu = $rows['prod_manu'];
                $prod_view = $rows['prod_view'];
                $prod_imaging = $rows['prod_imaging'];
                $prod_op_design = $rows['prod_op_design'];
                $prod_focal_len = $rows['prod_focal_len'];
                $prod_op_dia = $rows['prod_op_dia'];
                $prod_focal_ratio = $rows['prod_focal_ratio'];
                $prod_op_type = $rows['prod_op_type'];
                $prod_glass = $rows['prod_glass'];
                $prod_eye1 = $rows['prod_eye1'];
                $prod_eye1_mag = $rows['prod_eye1_mag'];
                $prod_eye2 = $rows['prod_eye2'];
                $prod_eye2_mag = $rows['prod_eye2_mag'];
                $prod_mag_low = $rows['prod_mag_low'];
                $prod_mag_high = $rows['prod_mag_high'];
                $prod_mag_theo = $rows['prod_mag_theo'];
                $prod_lim_stel = $rows['prod_lim_stel'];
                $prod_op_qual = $rows['prod_op_qual'];
                $prod_finder = $rows['prod_finder'];
                $prod_focus = $rows['prod_focus'];
                $prod_sec_obs = $rows['prod_sec_obs'];
                $prod_sec_obs_dia = $rows['prod_sec_obs_dia'];
                $prod_sec_obs_area = $rows['prod_sec_obs_area'];
                $prod_coat = $rows['prod_coat'];
                $prod_mnt_type = $rows['prod_mnt_type'];
                $prod_astro = $rows['prod_astro'];
                $prod_comp = $rows['prod_comp'];
                $prod_mat_bear = $rows['prod_mat_bear'];
                $prod_mat_mount = $rows['prod_mat_mount'];
                $prod_tube_len = $rows['prod_tube_len'];
                $prod_weight_tube = $rows['prod_weight_tube'];
                $prod_weight_mnt = $rows['prod_weight_mnt'];
                $prod_feat = $rows['prod_feat'];
                $prod_warranty = $rows['prod_warranty'];
            }
        }

        else
        {
            echo "Invalid Item ID";
            exit;
        }
    }
?>
<div class="product-edit-wrapper">
    <div class="edit-name">
        <h1>Edit Product &raquo; <?php echo $prod_model; ?></h1>
    </div>
</div>

<?php include '../inc/footer.php'; ?>
4

1 回答 1

0

采用

SELECT * FROM fin_prod WHERE prod_id = :prod_id

代替

SELECT * FROM fin_prod WHERE prod_id = $prod_id

请参阅PDO 准备好的语句


使用fetch()而不是fetchAll().

代替:

while($rows = $stmt->fetchAll())

$rows = $stmt->fetch(PDO::FETCH_ASSOC);
// or even $row for readability
// exclude bottom part from cycle

无论如何,您都会得到 1 行(如果按主键搜索),那么为什么要循环呢?

于 2013-05-08T06:24:56.243 回答