在Phpmyadmin中创建Concat触发器

时间:2016-10-31 23:42:32

标签: php mysql phpmyadmin

我画了一个空白。 (跑出咖啡因)。我试图在Phpmyadmin中创建一个Trigger,它将添加两个字符" MR"进入每一行。我不希望将字符添加到主ID,而是添加到标有mer_sku的列中。此外,其他数据将从html表单添加到此mer_sku col中,因此数据需要连接。

只是为了澄清,我试图在PHPmyadmin GUI中制作触发器

谢谢!

擅长添加我已经尝试的内容

enter image description here

错误在线1

enter image description here

2 个答案:

答案 0 :(得分:1)

所以,先发布我的代码,然后我会解释我的动机和另一个问题,我已经尝试解决这个问题。

?php 
if (isset($_POST['submit'])) {
    $mfr   = $_POST['mfr'];
    $type  = $_POST['type'];
    $desc  = $_POST['description'];
    $price = $_POST['price'];
    $qty   = $_POST['qty'];

    $last_id = 0;
    $sql = "SELECT m_id FROM merchandise";
    $result = mysqli_query($connection, $sql);
    while($row = mysqli_fetch_assoc($result)) {
    $last_id = $row["m_id"];
    }
    $next_id = $last_id+1;
    $conc = number_format($next_id/100,2,'-','');

    $query = "INSERT INTO merchandise (mfr,type,description,mer_sku,price,qty) ";
    $query .="VALUES ('$mfr','$type','$desc','MR{$mfr}{$conc}','$price','$qty')";
    $add_sku_query = mysqli_query($connection, $query);
    confirmQuery($add_sku_query);
    $alert = <<<DELIMETER

<div class='alert alert-warning alert-dismissible fade in' role='alert'>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
    <span aria-hidden="true">&times;</span>
</button>
<strong>Inventory Updated!</strong> <a href='inventory.php?view_all_inventory'>View All Inventory</a>
</div>
DELIMETER;

    echo $alert;
    }
?>

首先让我指出我确实尝试使用PDO进行设置,但我还没有完全理解它,所以我坚持使用mysqli。我知道我的代码设置如何让它容易受到SQL注入攻击。

除此之外,我的动机是尝试按顺序将项添加到表中。但是,我的代码当前自动递增,而不考虑ESSENTIAL的$ mfr变量。每个制造商都有一个独特的价值,因此自动增量需要自动增加PER制造商而不是自动增量,而忽略连接的制造商变量。

**CURRENT AUTO INCREMENT, [NOT WHAT I WHAT]**
MR500-01
MR600-02
MR700-03
MR500-04
MR600-05
MR700-06

**IDEAL AUTO INCREMENT, [WHAT I WANT]**
MR500-01
MR600-01
MR700-01
MR500-02
MR600-02
MR700-02

我希望我解释了我的想法。无论如何,这是我目前的状态,我正在努力创建我已经解决的决议。

希望这对任何人都有所帮助,或者如果有人提供了一些非常有用且非常感激的有用信息。谢谢。

答案 1 :(得分:0)

尝试在查询部分中运行GUI,而不是GUI。 我认为错误是因为mysql将delimiter | CREATE TRIGGER `merch_label` BEFORE INSERT ON `merchandise` FOR EACH ROW BEGIN SET NEW.mer_sku = CONCAT(NEW.mer_sku, 'MR'); END; | delimiter ; 视为触发器声明的结束。

在为触发器编写代码之前重新定义分隔符

尝试以下代码

{{1}}