mysql - 触发器确实对表进行了更改

标签 mysql database triggers

我正在将一些字段插入到数据库中,这是我可以做到的。我采用了一个触发器,将数据插入表“AFTER INSERT”事件。

<html>
<body>

<?php
$id=$_POST['id'];
$a=$_POST['id'];
$fname=$_POST['fname'];
$lname=$_POST['lname'];
$city=$_POST['city'];

$con=mysqli_connect('127.0.0.1:3306' ,'root','root','my_db');
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$sql1="select * from table2";

$result = mysqli_query($con,$sql1);
echo "<table border='1'>

<tr>
<th>Id</th>
<th>Firstname</th>
<th>Lastname</th>
<th>City</th>
</tr>";
while($row = mysqli_fetch_array($result,MYSQLI_ASSOC))

{
echo "<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $row['fname'] . "</td>";
echo "<td>" . $row['lname'] . "</td>";
echo "<td>" . $row['city'] . "</td>";
echo "</tr>";
}
echo "</table>"; 

$sql3 = "在每行的 temp2 上插入后创建触发器 MysqlTrigger 开始插入临时值(new.id,new.fname,new.lname,new.city,new.city);"; mysqli_query($con,$sql3);

$sql5="INSERT INTO temp2 (id,fname, lname, city)
VALUES
('$_POST[id]','$_POST[fname]','$_POST[lname]','$_POST[city]')";
mysqli_query($con,$sql5);



echo "1 record added";

//--------------- Trigger started ------------------

print "<h2>CREATE MySQL Trigger In PHP</h2>";
echo "<table border='1'>
<tr>
<th>Id</th>
<th>Firstname</th>
<th>Lastname</th>
<th>City</th>
<th>Status</th>
</tr>";
$sql4="select * from temp";
$res = mysqli_query($con,$sql4);
while($row = mysqli_fetch_array($res,MYSQLI_ASSOC))

{
echo "<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $row['fname'] . "</td>";
echo "<td>" . $row['lname'] . "</td>";
echo "<td>" . $row['city'] . "</td>";
echo "<td>" . $row['stat'] . "</td>";
echo "</tr>";
}
echo "</table>"; 

mysqli_close($con);

?>
</body>
</html>

这成功地将数据插入到 temp2 表中,但触发器中的事件不会对临时表进行任何更改。

我哪里出错了?

最佳答案

来自 mySQL manual

delimiter |

CREATE TRIGGER testref BEFORE INSERT ON test1
  FOR EACH ROW BEGIN
    INSERT INTO test2 SET a2 = NEW.a1;
    DELETE FROM test3 WHERE a3 = NEW.a1;
    UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
  END;
|

delimiter ;

触发器上缺少分隔符结束


您到底为什么要尝试使用 php 创建触发器?你不能在 MySQL Workbench 上使用 phpMyAdmin 创建它吗?触发器应该存在于数据库中...如果它不应该是永久的,您应该将其放在 php 代码的末尾...

关于mysql - 触发器确实对表进行了更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17445045/

相关文章:

sql-server - 插入到具有而不是来自实体数据框架的触发器的表中时出错

php - 如何通过单击按钮删除某些表格行

php - MYSQL SELECT QUERY 其中列相同

php - 以编程方式同步记录的想法

mysql - 分层 MySQL Assets 跟踪的最佳实践

javascript - 如何在滚动时仅触发元素上的单击事件?

php - 将所有表和字段更改为 MYSQL 中的 utf-8-bin 排序规则的脚本

MySQL 按 URL 路径模式分组

php - 在大数据集中递归搜索索引的性能

mysql - 更新完成后触发更改所有行