我画了一个空白。 (跑出咖啡因)。我试图在Phpmyadmin中创建一个Trigger,它将添加两个字符" MR"进入每一行。我不希望将字符添加到主ID,而是添加到标有mer_sku的列中。此外,其他数据将从html表单添加到此mer_sku col中,因此数据需要连接。
只是为了澄清,我试图在PHPmyadmin GUI中制作触发器
谢谢!
擅长添加我已经尝试的内容
错误在线1
答案 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">×</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}}