这是我的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的值输入到表中
所以有人可以告诉代码错误的地方
答案 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."') ");