【问题标题】:Insert with Stored Procedures and PHP?使用存储过程和 PHP 插入?
【发布时间】:2013-01-03 10:58:24
【问题描述】:

我第一次尝试创建一个简单的存储过程。我已经在网上搜索并找到了几个教程,但是当我尝试创建 INSERT 过程时总是遇到一些错误?

我正在尝试这个:

DELIMITER // 
CREATE PROCEDURE my_insert(IN fname VARCHAR(50),IN lname VARCHAR(50))

BEGIN

SET @fname=fname; 
SET @lname=lname;

PREPARE STMT FROM 
"INSERT INTO users(fname,lname) VALUES (?,?)";

EXECUTE STMT USING @fname,@lname; 

END

我收到此错误: #1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'my_insert(IN fname VARCHAR(50),IN lname VARCHAR(50)) BEGIN SET @fname=fn' 附近使用正确的语法

希望得到帮助并提前感谢:-)

【问题讨论】:

  • 您是否忘记了程序末尾的// 分隔符,或者您只是在将代码复制并粘贴到问题中时错过了它?

标签: php mysql stored-procedures


【解决方案1】:

您使用 " 而不是 ' 。这是您查询中的错误。正确的查询如下所示

DELIMITER // 
CREATE PROCEDURE my_insert(IN fname VARCHAR(50),IN lname VARCHAR(50))

BEGIN

SET @fname=fname; 
SET @lname=lname;

PREPARE STMT FROM 
'INSERT INTO users(fname,lname) VALUES (?,?)';

EXECUTE STMT USING @fname,@lname; 

END //

或者你可以简单地使用

DELIMITER //
CREATE PROCEDURE my_insert(IN fname VARCHAR(50),IN lname VARCHAR(50))

BEGIN
INSERT INTO users(`fname`,`lname`) VALUES (fname,lname);


END //

【讨论】:

  • 工作就像一个魅力,虽然我发现了我的错误。在我的原始脚本中,我使用 insert( 而不是 my_insert(。这就是我收到此错误的原因,但感谢 ;-)
猜你喜欢
  • 1970-01-01
  • 2012-01-23
  • 1970-01-01
  • 1970-01-01
  • 2014-06-23
  • 2013-07-08
  • 2011-05-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多