从php到存储过程的值

时间:2012-11-29 09:24:50

标签: php mysql stored-procedures

这是我的PHP代码

<?php
$code='1,2,3';
$this->db->query("CALL SP_db(\"$code\"));
?>

如果我var_dump($code)我得到此string(5) "1,2,3"

这是我的存储过程代码

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

begin

select * from blabla where company_id in (v_company);
.
.
.

我使用此代码在表中插入一些值 问题,如果我使用这个代码,我从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_company值保存到表中以确保它正常工作

因为php的值输入到表中

所以有人可以告诉代码错误的地方

2 个答案:

答案 0 :(得分:2)

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

select * from blabla where company_id in ('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);

但它不会像in那样使用索引;

答案 1 :(得分:0)

我认为你遗失了"

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

或试试这个

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