PHP准备的语句不更新SQL数据库

德布斯瓦

这是我第一次尝试使用准备好的语句来更新MySQL。不知道我在哪里出错,但是当我按下“提交”按钮时,页面将刷新,而实际上没有任何更新生效。

<?php session_start();

include_once("../includes/connection.php");
include_once("../includes/product.php");

$product = new Product;
$products = $product->fetch_all();

if (isset($_SESSION['logged_in'])) {

    if (isset($_GET['id'])) {
    $id = $_GET['id'];
    $sql_select = "SELECT * FROM products WHERE product_id = '{$id}'";
    $statement = $pdo->query($sql_select);
    $r = $statement->fetch(PDO::FETCH_ASSOC);
    }

    if (isset($_POST['submit'])) {
    if (isset($_POST['product_name'])) { $name = $_POST['product_name']; }
    if (isset($_POST['product_avail'])) { $avail = $_POST['product_avail']; }
    if (isset($_POST['product_price'])) { $price = $_POST['product_price']; }
    if (isset($_POST['product_desc'])) { $desc = $_POST['product_desc']; }
    if (isset($_POST['image'])) { $img = $_POST['image']; }

    $sql_update = 'UPDATE products SET (product_name, product_avail, product_price, product_desc, image) 
    VALUES (:name, :avail, :price, :desc, :img) WHERE product_id = :id';

    $updstmt = $pdo->prepare($sql_update);
    $updstmt->execute(array(
        ':id' => $id,
        ':name' => $name,
        ':avail' => $avail,
        ':price' => $price,
        ':desc' => $desc,
        ':img' => $img));
    }
?>
    <?php include_once("../includes/header.php"); ?>
        <h4>Edit product</h4>
            <!-- call error if any required fields are empty -->
            <?php if (isset($error)) { ?>
                <small style="color:#aa0000;">* <?php echo $error; ?>
            <?php } ?>
            <form action="edit_test.php?id=<?php echo $_GET['id']; ?>" method="post">
                <small>Product Name</small><br />
                    <input type="text" name="product_name" value="<?php echo $r['product_name']; ?>" <?php if (isset($error) && empty($_POST['product_name'])) { ?> class="error" <?php } ?>/>
                <br /><br />
                <small>Available?</small>
                    <input type="text" name="product_avail" value="<?php echo $r['product_avail']; ?>" <?php if (isset($error) && empty($_POST['product_avail'])) { ?> class="error" <?php } ?>/>
                <small>Price</small>
                &#36;<input type="number" min="0.01" step="0.01" name="product_price" value="<?php echo $r['product_price']; ?>" <?php if (isset($error) && empty($_POST['product_price'])) { ?> class="error" <?php } ?>/>
                <br /><br />
                <small>Product Description</small>
                    <textarea rows="20" cols="30" name="product_desc" <?php if (isset($error) && empty($_POST['product_desc'])) { ?> class="error" <?php } ?>><?php echo $r['product_desc']; ?>    </textarea><br /><br />
            <br /><br />
                <small>Product Image</small>
                <input type="text" name="image" value="<?php echo $r['image']; ?>" <?php if (isset($error) && empty($_POST['i'])) { ?> class="error" <?php } ?>/>

                <input type="submit" value="POST" class="submit save">
            </form>

            <br /><br />
            <small><a href="index.php">&larr; Back</a></small>
        </div>
    <?php include("../includes/footer.php"); ?>
<?php   
}
?>

我要去哪里错了?

放克四十尼纳

结合杰伊的答案:

正因为如此if (isset($_POST['submit'])) {,您的提交按钮仍未命名。

<input type="submit" value="POST" class="submit save">

因此将其更改为

<input type="submit" value="POST" class="submit save" name="submit">

您的条件语句取决于它,因此它不会执行任何语句。

但是,如果不进行更新,则如果确实要插入而不是UPDATE,则通过更改UPDATE products SETINSERT INTO products进行插入。


$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);打开连接后立即添加以捕获错误。

旁注:错误报告仅应在登台进行,而不应在生产过程中进行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从数据库准备的语句填充列表

来自分类Dev

MySQLi更新准备好的语句不更新数据库

来自分类Dev

准备好的SQL语句可以由数据库重写吗?

来自分类Dev

SQL数据库错误:无法准备语句

来自分类Dev

sql更新不更改数据库中的数据

来自分类Dev

PHP准备的语句导致多少次往返或数据库命中?

来自分类Dev

MySQLi准备更新而不更新数据库

来自分类Dev

数据库中的汉字准备语句

来自分类Dev

PHP不更新数据库中的行

来自分类Dev

更新SQL语句未触发到数据库

来自分类Dev

PDO准备的语句插入数据库

来自分类Dev

PHP SCRIPT-执行时不更新数据库

来自分类Dev

从数据库准备的语句填充列表

来自分类Dev

用php更新sql数据库

来自分类Dev

使用php语句更新MySQL数据库

来自分类Dev

用用户输入更新MySQL数据库的准备好的语句

来自分类Dev

SQL查询不更新数据库

来自分类Dev

PHP准备的语句不更新SQL数据库

来自分类Dev

MySQLi更新准备好的语句不更新数据库

来自分类Dev

准备好的SQL语句可以由数据库重写吗?

来自分类Dev

SQL数据库错误:无法准备语句

来自分类Dev

PHP的形式不更新数据库

来自分类Dev

使用php更新sql数据库

来自分类Dev

数据库中的汉字准备语句

来自分类Dev

我如何使用准备好的语句更新mysql数据库中的值

来自分类Dev

使用准备好的语句将空值插入数据库PHP MYSQL

来自分类Dev

PHP MySql 准备语句......如何更新数据库,添加到已经存储的值

来自分类Dev

PHP ajax不更新数据库

来自分类Dev

Java 准备好的语句无法更新数据库