gpt4 book ai didi

php - 不要添加名称重复的条目

转载 作者:行者123 更新时间:2023-11-29 10:23:42 24 4
gpt4 key购买 nike

你好,有这样一段代码

if(isset($_POST['add_product'])){
$req_fields = array('product-title','product-categorie','product-
quantity','buying-price', 'saleing-price' );
validate_fields($req_fields);
if(empty($errors)){
$p_name = remove_junk($db->escape($_POST['product-title']));
$p_cat = remove_junk($db->escape($_POST['product-categorie']));
$p_qty = remove_junk($db->escape($_POST['product-quantity']));
$p_buy = remove_junk($db->escape($_POST['buying-price']));
$total = $p_qty*$p_buy ;
$p_sale = remove_junk($db->escape($_POST['saleing-price']));
if (is_null($_POST['product-photo']) || $_POST['product-photo'] === "") {
$media_id = '0';
} else {
$media_id = remove_junk($db->escape($_POST['product-photo']));
}
$date = make_date();
$query = "INSERT INTO products (";
$query .=" name,quantity,buy_price,total,sale_price,categorie_id,media_id,date";
$query .=") VALUES (";
$query .=" '{$p_name}', '{$p_qty}', '{$p_buy}', '{$total}', '{$p_sale}', '{$p_cat}', '{$media_id}', '{$date}'";
$query .=")";
$query .=" ON DUPLICATE KEY UPDATE name='{$p_name}'";
if($db->query($query)){
$session->msg('s',"Готовый продукт добавлен в базу ");
redirect('add_product.php', false);
} else {
$session->msg('d',' Ошибка что то пошло не так!');
redirect('product.php', false);
}

} else{
$session->msg("d", $errors);
redirect('add_product.php',false);
}

}

您可以看到代码获取表单数据并将其插入到产品表中。一切都可以,但是当产品名称从 p_name 字段重复时,它不会将数据添加到表中,而是写入“成品已添加到数据库中”。例如,数据库中昨天添加了产品“面包”。如果今天我们再次添加名为“面包”的产品,它会说“成品已添加到数据库中”,但它没有添加任何东西。我觉得全都是线路惹的祸。 =“重复 key 更新名称 = '{$ p_name}'”;但如果删除它,该脚本将不起作用。

最佳答案

如果您想删除ON DUPLICATE KEY UPDATE name = '{$ p_name},只需删除这行代码即可:

 $query .=" ON DUPLICATE KEY UPDATE name='{$p_name}'";

注意:你是对的,问题的发生是因为你有 ON DUPLICATE KEY UPDATE name = '{$ p_name}。如果您的 table 上已有“面包”,并尝试插入另一个“面包”,您将永远不会有 2 个名为“面包”的产品,因为您正在强制使用"new"“面包”产品提供的信息更新现有(旧)“面包”产品。

I feel that the line is all to blame. = "ON DUPLICATE KEY UPDATE name = '{$ p_name}'"; But if you remove it, the script does not work.

如果在删除“ON DUPLICATE”代码行后脚本无法工作,是因为您可能将名称字段设置为产品上的>主键。如果是这样,您必须使用名称字段 + 另一个字段(可以是 Id)创建一个复合主键,而不是仅将名称字段作为主键关键

关于php - 不要添加名称重复的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48733248/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com