Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果数据存在,更新数据库_Php_Mysql_Pdo - Fatal编程技术网

Php 如果数据存在,更新数据库

Php 如果数据存在,更新数据库,php,mysql,pdo,Php,Mysql,Pdo,我有一个包含两列的数据库。产品名称和数量。 我还有两个表单,一个用于用户添加新产品的输入,一个用于用户添加数量的输入。 另一种形式是在产品售出时更新数量 我面临的问题是,当用户使用第二个表单来更新特定产品的数量时,数据库中产品的所有数量也会被减去。希望我正确地解释了我的问题 完整代码: <?php class TableRows extends RecursiveIteratorIterator { function __construct($it) { p

我有一个包含两列的数据库。产品名称和数量。 我还有两个表单,一个用于用户添加新产品的输入,一个用于用户添加数量的输入。 另一种形式是在产品售出时更新数量

我面临的问题是,当用户使用第二个表单来更新特定产品的数量时,数据库中产品的所有数量也会被减去。希望我正确地解释了我的问题

完整代码:

<?php


class TableRows extends RecursiveIteratorIterator { 
    function __construct($it) { 
        parent::__construct($it, self::LEAVES_ONLY); 
    }
}

$servername = "localhost";
$username = "root";
$password = "";

try {
    $conn = new PDO("mysql:host=$servername;dbname=program", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "<script>alert('Connected successfully');</script>"; 
    }
catch(PDOException $e)
    {
    echo "Connection failed: " . $e->getMessage();
    }

 if (isset($_POST['sub']) == 1) {
    $id2 = $_POST['id2'];
    $qty2 = $_POST['qty2'];
    $to = "xxxxxx";
    $subject = "New sale report";
    $header = "From The shop";

    $stmt = $conn->prepare("SELECT brand_id FROM brands WHERE brand_id = :id2");
    $stmt->bindParam(':id2', $id2);
    $stmt->execute();
    $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
    foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) { 
        $r = $v;
        $s = $r - $qty2;
        if ($stmt->rowCount() === 1) {
            echo $s;
            $sql_new = "UPDATE brands SET brand_qty='$s'";
            $conn->exec($sql_new);
        }
        echo "<script>alert('New record successfully updated.')</script>";
    }
    $stmt_m = $conn->prepare("SELECT brand_id FROM brands");
    $stmt_m->execute();
    $results = $stmt_m->setFetchMode(PDO::FETCH_ASSOC);
    foreach ( new TableRows(new RecursiveArrayIterator($stmt_m->fetchAll())) as $t=>$d ) {
        $body = "Item sold: ". $d ."\n\n Quantity sold: ". $s ." ";
    }
    //mail($to, $subject, $body, $header);
 }

 $id = $_POST['id'];
 $qty = $_POST['qty'];

 if (isset($_POST['submit']) == 1) {
    $stmt_mt = $conn->prepare("SELECT brand_id FROM brands WHERE brand_id = :id");
    $stmt_mt->bindParam(':id', $id);
    $stmt_mt->execute();


    if($stmt_mt->rowCount() === 1) {
        echo "<script>alert('exists in database.')</script>";   
    } else {
        echo "<script>alert('adding hoodie to database.')</script>";
        $sql = "INSERT INTO brands (brand_id, brand_qty) VALUES ('$id', '$qty')";
        $conn->exec($sql);    
        echo "<script>alert('New record inserted succesfully.')</script>"; 
    }
 }



?>

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
<form method="post">
    <input type="text" placeHolder="Enter ID" name="id" />
    <input type="number" placeHolder="Quantity" name="qty" />
    <input name="submit" type="submit" value="submit" />
</form>

<form method="post">
    <input type="text" placeHolder="Enter ID" name="id2" />
    <input type="number" placeHolder="Number of sales" name="qty2" />
    <input name="sub" type="submit" value="submit" />
</form>

</body>
</html>

看起来您正在使用更新更新整个表-尝试更改更新查询以包括品牌标识

if($stmt->rowCount()==1){
echo$s;
$stmt2=$conn->prepare(“更新品牌设置品牌数量='s'其中品牌标识=:id2”);
$stmt2->bindParam(':id2',$id2);
$stmt2->execute();
}