【发布时间】:2016-11-09 06:35:22
【问题描述】:
我尝试编写这样的存储过程,但它不起作用:
DROP PROCEDURE IF EXISTS `my_test`;
CREATE PROCEDURE `my_test`(
IN my_in_var VARCHAR(255),
OUT my_out_var VARCHAR(255)
)
BEGIN
IF(in_var == 'my_in_value') THEN
SET my_out_var = 'my_out_value1';
ELSE
SET my_out_var = 'my_out_value2';
END IF;
END
我尝试使用 PDO 从 php 执行
$conn = new PDO("mysql:host=".$mysql_host.";dbname=".$mysql_bd, $mysql_user, $mysql_password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$conn->exec($sql);
没有错误,但我在 MySql 服务器上看不到它
SHOW CREATE PROCEDURE my_test
所以我尝试将其复制粘贴到 phpmyadmin 的 SQL 窗口中,但出现以下语法错误:
1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获得在 '== 'my_in_value' 附近使用的正确语法)然后 SET my_out_var = 'my_out_value1'' 在第 6 行
什么是正确的语法?为什么 PDO 不显示错误?
欢迎任何帮助 - 谢谢
【问题讨论】:
-
缺少包装
DELIMITER? -
你试过用
=代替==吗? -
是的,如果你修复它可以保存
-
你试图执行什么?通过 PDO 创建或运行它(不存在)?
-
顺便说一句,你没有
in_var
标签: php mysql stored-procedures pdo