值从php转换为存储过程

值从php转换为存储过程,php,mysql,stored-procedures,Php,Mysql,Stored Procedures,这是我的php代码 <?php $code='1,2,3'; $this->db->query("CALL SP_db(\"$code\")); ?> 我使用此代码向表中插入一些值 问题是,如果我使用这段代码,我从php获得v_company,它不起作用 但如果我尝试填充值,它会起作用 CREATE DEFINER=`test`@`localhost` PROCEDURE `SP_db`(v_company varchar(10)) begin se

这是我的php代码

<?php
$code='1,2,3';
$this->db->query("CALL SP_db(\"$code\"));
?>
我使用此代码向表中插入一些值 问题是,如果我使用这段代码,我从php获得v_company,它不起作用

但如果我尝试填充值,它会起作用

CREATE DEFINER=`test`@`localhost` PROCEDURE `SP_db`(v_company varchar(10))

    begin

    select * from blabla where company_id in (1,2,3);
但是php发送的值由存储过程接收, 我试图将v_公司的价值保存到表中,以确保它正常工作

因为php中的值已输入到表中


那么,有人能告诉我代码哪里错了吗?

我认为您缺少了

或者试试这个

$this->db->query("CALL SP_db('".$code."') ");

当您将'1,2,3'传递给您的过程时,您将得到一个字符串,并且您的查询将变为

select * from blabla where company_id in ('1,2,3');
不是

您可以使用
find_in_set
代替
in

select * from blabla where find_in_set(company_id, v_company);

但它不会像中的那样很好地使用索引;

尝试使用PDO示例5yupp我也这么认为,但我不知道如何解释它……它就像一个魅力
select * from blabla where company_id in ('1,2,3');
select * from blabla where company_id in (1,2,3);
select * from blabla where find_in_set(company_id, v_company);