【问题标题】:PHP MySql Stored Procedure With Input Parameters Not Working [duplicate]输入参数不起作用的PHP MySql存储过程[重复]
【发布时间】:2021-05-19 20:54:58
【问题描述】:

我有一个 MySQL 数据库,我在其中设置了一个存储过程,我知道存储过程有效,因为我可以从 phpMyAdmin 控制面板执行它。

我现在正尝试从我的网站执行该过程,我没有收到任何错误,但没有任何内容插入到我期望的各种表中。这是我从我的 php 页面运行的代码。

  $link = new mysqli($host_name, $user_name, $password, $database);
  if ($link->connect_error)
  {
    die('<p>Failed to connect to MySQL: '. $link->connect_error .'</p>');
  }
  else
  {
    $sp = $link->prepare("CALL sp_InsertNewSchematic(?, ?, ?, ?, ?, ?, ?)");
    $sp->bind_Param('ssissss', $imageFilename, $schematicFileName, $Creator, $youtube, $description, $tags, $versions);
    $sp->execute();
  }

【问题讨论】:

  • execute() 的返回值是多少?有什么错误吗?每次调用prepare()execute() 后,您总是需要检查错误。或者,enable mysqli exceptions.
  • 谢谢,没有意识到我需要专门输出错误,我调整了我的代码,发现我忘记了我的存储过程中的输出参数。

标签: php mysql mysqli


【解决方案1】:

刚刚想通了,对于任何有类似问题的人

我把执行行改成了这个;

if (!$sp->execute()){
  echo "Execute failed: (" . $sp->errno . ") " . $sp->error;
}

输出错误,原来我忘记了我的存储过程有一个输出变量,所以参数的数量与过程不匹配,现在都可以工作了。

感谢比尔的回复。

【讨论】:

  • 请不要这样做。这是一种可怕的做法。改为启用 mysqli 错误报告
猜你喜欢
  • 2019-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-10
  • 2012-04-07
  • 1970-01-01
相关资源
最近更新 更多