【发布时间】:2014-02-08 05:18:24
【问题描述】:
我通过互联网找到了从一个表单更新两个表的最佳实践,我决定在 MySQL 中创建存储过程来插入数据。我不知道如何从存储过程中传递日期时间或时间戳以插入桌子。我对 MySQL 很陌生,遇到了几个错误。我的存储过程如下所示:
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_insertUser`(
IN userId int(11)
, IN userName varchar(15)
, IN passWord varchar(15)
, IN create_DateStamp datetime
, IN update_DateStamp datetime
BEGIN
INSERT INTO `Php_Project`.`User`
(userId,
userName,
passWord,
create_DateStamp,
update_DateStamp)
VALUES
(
userId,
userName,
passWord,
create_DateStamp,
update_DateStamp
);
我也有 create_Datestamp 的触发器:
USE `Php_Project`;
DELIMITER $$
CREATE DEFINER=`root`@`localhost` TRIGGER `User_BINS` BEFORE INSERT ON `User` FOR EACH ROW
BEGIN
-- Set the creation date
SET new.create_DateStamp= now();
End
我在 MySQL Workbenck 中创建了这个。当我尝试在查询窗口中调用 sproc 时出现错误:
CALL `Php_Project`.`sp_insertUser`(1234,surajnew55,password,now(),now());
错误提示:错误代码:1054。“字段列表”中的未知列“surajnew55”0.000 秒 请帮我弄清楚在这种情况下是如何工作的。
【问题讨论】:
-
将输入 arg 'IN userName varchar(15)' 更改为 'IN theUserName varchar(15)'。然后将 VALUES 部分更改为使用“theUserName”而不是“userName”。我很确定存储的项目被您作为输入参数重载的 userName 列弄糊涂了。对所有这些列/inp arg 名称执行相同操作,以使列名称与输入 arg 名称不同。
-
@robnick 你成功了。谢谢老兄。
标签: php mysql stored-procedures