【问题标题】:MySQL stored procedure using multiple parametersMySQL存储过程使用多个参数
【发布时间】:2014-07-09 08:54:44
【问题描述】:

我可以使用带有一个参数的 MySQL 存储过程,但是当我尝试使用多个参数时,存储过程不会被调用。我将粘贴我拥有的 php 代码,然后粘贴 SQL 代码。谁能说明为什么它不起作用?

谢谢

<?php 

//DB Connection include
include '/connection/proccon.php';    

 $skill=1;
 $level=1;
 $user=1;

//SQL for identify user 
$sqlquestion = sprintf("call updatequestion('%s, %s, %s')", $skill, $user, $level);

echo $sqlquestion;
$resultquestion = mysqli_query($link, $sqlquestion);    

?>

下面的SQL

--Procedure: updatequestion

--DROP PROCEDURE IF EXISTS updatequestion;

DELIMITER |

CREATE DEFINER = 'root'@'%' PROCEDURE updatequestion 
(
  IN  v_uid    int,
  IN  v_level  int,
  IN  v_qid    int
)
BEGIN
INSERT INTO answer (qid,uid,level) VALUES(v_qid,v_uid,v_level);
END|

DELIMITER ;

【问题讨论】:

  • 所有参数都用引号引起来,所以它只是一个字符串而不是 3 个单独的参数。

标签: php mysql mysqli


【解决方案1】:

更好地使用引号,您将 3 个参数包含在 2 个引号中,我认为这是错误的。

解决方案:

**

$sqlquestion = sprintf("调用更新问题(%s, %s, %s)", $skill, $user, $level);

**

祝你有美好的一天

【讨论】:

    【解决方案2】:

    改成:

    $sqlquestion = sprintf("call updatequestion(%s, %s, %s)", $skill, $user, $level);
    

    引号将所有参数组合成一个字符串。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多