我的决赛项目除了用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 » <?php echo $prod_model; ?></h1>
</div>
</div>
<?php include '../inc/footer.php'; ?>
答案 0 :(得分:0)
使用
SELECT * FROM fin_prod WHERE prod_id = :prod_id
而不是
SELECT * FROM fin_prod WHERE prod_id = $prod_id
使用fetch()
代替fetchAll()
。
替换:
while($rows = $stmt->fetchAll())
使用
$rows = $stmt->fetch(PDO::FETCH_ASSOC);
// or even $row for readability
// exclude bottom part from cycle
你会得到1行(如果按主键搜索),那为什么循环?