PHP通过文本框更新
发布时间:2020-12-13 16:58:40 所属栏目:PHP教程 来源:网络整理
导读:现在,只有在填写完所有文本框的情况下,更新才有效,因此用户不能仅仅更新productName.没有错误,但如果其他文本框留空,则数据库将使用空格和0进行更新.我希望这可以更新接收输入的任何文本框,无论是一个还是全部,如果没有输入任何内容,则单独保留其余信息. 如
现在,只有在填写完所有文本框的情况下,更新才有效,因此用户不能仅仅更新productName.没有错误,但如果其他文本框留空,则数据库将使用空格和0进行更新.我希望这可以更新接收输入的任何文本框,无论是一个还是全部,如果没有输入任何内容,则单独保留其余信息.
如果该行的productName是三星,则描述是’A phone’legack’Priice是179.99并且我只更新productName文本框我仍然希望描述和wholesalePrice保持不变.现在,如果我只更新productName,那么wholesalePrice显示为0.00,描述为空.我尝试在查询中使用OR语句而不是逗号,而在输入信息的任何文本框中都返回了0. if(isset($_POST['id'])) { try { $query = "UPDATE products SET productName = :productName,description = :description,wholesalePrice = :wholesalePrice,retailPrice = :retailPrice,category = :category,quantityOnHand = :quantityOnHand WHERE productID = :productID"; $statement = $db->prepare($query); $statement->bindValue(':productID',$_POST['id']); $statement->bindValue(':productName',$productName); $statement->bindValue(':description',$description); $statement->bindValue(':wholesalePrice',$wholesalePrice); $statement->bindValue(':retailPrice',$retailPrice); $statement->bindValue(':category',$category); $statement->bindValue(':quantityOnHand',$quantityOnHand); $statement->execute(); $statement->closeCursor(); //reload page after data is entered into the table and display a message if successful for 3 seconds before redirect $page = $_SERVER['PHP_SELF']; header('Location: ' . $_SERVER["HTTP_REFERER"] ); exit; 解决方法
如果设置了每个$_POST值,则可以使用列的辅助数组动态绑定值.然后,您可以仅为这些值创建更新查询.
$fields = array('productName','description','wholesalePrice','retailPrice','category','quantityOnHand'); $values = array(); $binds = array(); foreach($fields as $key => $value) { if (isset($_POST[$value])) { $values[] = $value.' = :'.$value; $binds[':'.$value] = $_POST[$value]; } } if (!empty($values)) { $query = "UPDATE products SET "; $query .= implode(',',$values); $query .= " WHERE productID = :productID"; $binds[':productID'] = $_POST['id']; $statement = $db->prepare($query); $statement->execute($binds); $statement->closeCursor(); } 编辑: 如果您将值存储在变量中,则可以使用变量变量: foreach($fields as $key => $value) { if (isset($$value)) { $values[] = $value.' = :'.$value; $binds[':'.$value] = $$value; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |