Php 如何使用包含绑定参数的查询在mysql中创建存储过程?

Php 如何使用包含绑定参数的查询在mysql中创建存储过程?,php,mysql,stored-procedures,parameters,binding,Php,Mysql,Stored Procedures,Parameters,Binding,我有一个搜索栏,我在代码中创建了一个查询,但现在我想为它创建一个存储过程,这样我就可以在需要时调用它,而不是在代码中创建查询 然而,由于使用了绑定参数,我似乎无法在mysql中创建存储过程如CONCAT(“%”,标题“%”) 有人知道我的存储过程应该是什么样子吗?我将如何调用它?该过程如下所示: CREATE PROCEDURE MyProc(IN in_title TEXT) BEGIN SELECT p.postID, p.title, p.tagID, p.content, p.dat

我有一个搜索栏,我在代码中创建了一个查询,但现在我想为它创建一个存储过程,这样我就可以在需要时调用它,而不是在代码中创建查询

然而,由于使用了绑定参数,我似乎无法在mysql中创建存储过程<代码>如CONCAT(“%”,标题“%”)


有人知道我的存储过程应该是什么样子吗?我将如何调用它?

该过程如下所示:

CREATE PROCEDURE MyProc(IN in_title TEXT)
BEGIN
  SELECT p.postID, p.title, p.tagID, p.content, p.date, p.postImage, u.username 
  FROM user as u inner JOIN user_post as UP on u.userID=up.userID inner 
  JOIN post as p ON up.postID=p.postID 
  WHERE p.title LIKE CONCAT('%', in_title, '%');
END
请小心将proc的输入参数命名为与表中任何列不同的名称,否则可能会得到意外的结果

您不需要在此过程中使用预先准备好的语句。只需在SQL语句的表达式中使用过程参数

处理结果不需要在进程中写入任何游标。MySQL进程对SELECT语句执行的默认操作是返回其结果

您可以通过以下方式从PHP调用它:

$req = $db->prepare("CALL MyProc(:title)");
所有其余的PHP代码都是相同的

坦白地说,我不会为这个程序费心。它并不能真正帮助您减少代码。但它确实:

  • 让您学习一种新的程序代码语言
  • 使应用程序部署复杂化
  • 有可能将更多的处理负载推到数据库服务器上
我几乎从不使用任何MySQL存储过程

$req = $db->prepare("CALL MyProc(:title)");